1
GIT
LO STUPIDO GESTORE DI CONTENUTI
Introduzione & alcuni concetti avanzati
2
GIULIO CACCIN
Sviluppatore dal 2003
.NET / Java
Utilizzo Git dal 2012
Appassionato di diritti umani
3
PERCHÉ GIT?
So ware libero (senza restrizioni di utilizzo)
E' uno standard de facto nel settore
Strutturato per favorire la collaborazione
4
UN PO' DI STORIA
le esigenze di Linus Torvald
Veloce (in locale e in rete)
Distribuito
Flessibile
Sicuro
Avere i codici sorgenti
5
GRAFO ACICLICO DIRETTO
Struttura di nodi
Percorrendo il grafo non si può mai tornare alla partenza
Nessun nodo può essere isolato
6
UN COMMIT (NON) È PER SEMPRE
Commit spesso, fin da subito
Ogni commit rappresenta una idea o un cambiamento
Prima del push ci si può sbizzarrire
Si può riscrivere la storia dei commit locali
7
I “TRE” STATI
8
CENTRALIZED WORKFLOW
Il più vecchio metodo, si lavora solo su master
Si applicano le nuove modifiche sempre in cima alle vecchie
La storia viene mantenuta solo dai commit
      E­­­F­­­G  *E­­­F­­­G master 
     /           / 
    A­­­B­­­C­­­D master 
         
9
FEATURE BRANCH WORKFLOW
Ogni feature viene sviluppata su un branch
Ogni branch viene innestato sul master mantenendo la
storia separata
      E­­­F­­­G branch 
     /          
    A­­­B­­­C­­­# master 
         
10
GITFLOW WORKFLOW
Master taggato per versioni rilasciate
Develop per build non stabili
Feature branch
        #­­­# branch 
       /      
    ­­#­­­#­­­#­­­#­­­ develop 
     /          
    #­­­­­­­­­­­#­­­ master 
         
11
FORKING WORKFLOW
Lo sviluppatore ha un repo locale e uno pubblico
Ogni repo pubblico punta allo stesso repo centrale
Un mantainer ha i diritti di scrittura sul repo principale
12
GITHUB FLOW
Il più leggero: solo master e branch
Alla fine dello sviluppo si apre una pull request
Vengono implementate le modifiche
Viene prima deployato e poi mergiato in master
13
PERCHÉ LA LINEA DI COMANDO?
Si possono usare tutti i comandi di Git
Permette di capire tutte le GUI più velocemente
Viene installata con tutte le GUI in tutte le piattaforme
Update più frequenti
14
GIT E WINDOWS
Riga di comando semplice (CONSIGLIATO!)
Interfaccia grafica potente
Emulatore di console (da usare con git-for-windows)
https://git-for-windows.github.io/
https://www.sourcetreeapp.com/
https://conemu.github.io/
Ma la linea di comando offre alcune sorprese...
15
GIT-GUI
Multipiattaforma
Pensato per gestire commit, branch e merge
Permette di fare stage selettivo di linea
16
GITK
Multipiattaforma
Pensato per gestire lo storico
Visualizza il grafico dei commit
Permette di fare il blame
[bonus] gitk ‐‐follow nome‐file
17
README.MD
Consigliato da GitHub
Presenta il repository
Usa CommonMarkdown
18
I COMANDI PIÙ USATI
git add
git diff
git branch
git push
git status
git commit
git checkout
git pull
git log
19
ALTRI COMANDI
git clone
git [command] ‐‐help / git help [command]
git show [object]
git config
20
INTO THE PORCELAIN
Alcuni esempi pratici
21
GIT CONFIG
Gestisce configurazioni per
macchina (system), utente (global) e repository (local)
Con credential.helper=manager usa le credenziali di
windows
[bonus] crea i tuoi alias
git config ‐‐global alias.grog "log ‐‐all ‐‐
decorate ‐‐graph ‐‐oneline"
22
GIT STASH
Permette di salvare velocemente il proprio lavoro
Lo puoi ri-applicare su qualunque branch
23
“PULL” VS “FETCH&MERGE”
pull esegue in contemporanea fetch e merge
eseguiti separatamente permettono di capire cosa è
successo in remoto
indispensabile se si usa rebase o push --force
24
GIT TAG
Permette di etichettare qualunque punto del log
Non viene condiviso se non esplicitato
Riferimento per usare altri comandi
25
GIT RESET
Riporta la HEAD allo stato specificato
Usato per togliere dall’index modifiche aggiunte
Usato per cancellare commit non condivisi
26
GIT CLEAN
Pulisce velocemente la working directory
git clean –f –n ‐d
27
GIT REBASE
Da usare con molta attenzione
Rende più leggibile la storia
Sconsigliato in commit già condivisi
Aiuta i mantainer perchè i conflitti vengono risolti prima
28
DETACHED HEAD
Capita usando le GUI
Indica la working directory staccata da un branch
Aiuta a capire che si potrebbe perdere il lavoro
29
BREVE STORIA SULLA SICUREZZA
git commit ­a ­m "HeHeHe" ­­author "Chuck Norris <chuck@is.god>"
Ogni commit ha un committer (account usato) e un author
In contesti dove la sicurezza è necessaria potrebbe essere
necessario usare firme GPG
30
“DOMANDE?”
@giuliocaccin
31
LINK UTILI
La bibbia
Imparare dai maestri
Visual cheatsheet
https://git-scm.com/book/en/v2
https://help.github.com/
http://ndpso ware.com/git-cheatsheet.html
32
DOVE HO RUBATO
Video fantastico di Lorna Mitchell
Importante articolo sui commit
Guida sui flussi di lavoro di Atlassian
Indispensabile GitHub Flow
Firmate con GPG i vostri commit Git

Git – lo stupido gestore di contenuti

  • 1.
    1 GIT LO STUPIDO GESTOREDI CONTENUTI Introduzione & alcuni concetti avanzati
  • 2.
    2 GIULIO CACCIN Sviluppatore dal2003 .NET / Java Utilizzo Git dal 2012 Appassionato di diritti umani
  • 3.
    3 PERCHÉ GIT? So warelibero (senza restrizioni di utilizzo) E' uno standard de facto nel settore Strutturato per favorire la collaborazione
  • 4.
    4 UN PO' DISTORIA le esigenze di Linus Torvald Veloce (in locale e in rete) Distribuito Flessibile Sicuro Avere i codici sorgenti
  • 5.
    5 GRAFO ACICLICO DIRETTO Strutturadi nodi Percorrendo il grafo non si può mai tornare alla partenza Nessun nodo può essere isolato
  • 6.
    6 UN COMMIT (NON)È PER SEMPRE Commit spesso, fin da subito Ogni commit rappresenta una idea o un cambiamento Prima del push ci si può sbizzarrire Si può riscrivere la storia dei commit locali
  • 7.
  • 8.
    8 CENTRALIZED WORKFLOW Il piùvecchio metodo, si lavora solo su master Si applicano le nuove modifiche sempre in cima alle vecchie La storia viene mantenuta solo dai commit       E­­­F­­­G  *E­­­F­­­G master       /           /      A­­­B­­­C­­­D master           
  • 9.
    9 FEATURE BRANCH WORKFLOW Ognifeature viene sviluppata su un branch Ogni branch viene innestato sul master mantenendo la storia separata       E­­­F­­­G branch       /               A­­­B­­­C­­­# master           
  • 10.
    10 GITFLOW WORKFLOW Master taggatoper versioni rilasciate Develop per build non stabili Feature branch         #­­­# branch         /           ­­#­­­#­­­#­­­#­­­ develop       /               #­­­­­­­­­­­#­­­ master           
  • 11.
    11 FORKING WORKFLOW Lo sviluppatoreha un repo locale e uno pubblico Ogni repo pubblico punta allo stesso repo centrale Un mantainer ha i diritti di scrittura sul repo principale
  • 12.
    12 GITHUB FLOW Il piùleggero: solo master e branch Alla fine dello sviluppo si apre una pull request Vengono implementate le modifiche Viene prima deployato e poi mergiato in master
  • 13.
    13 PERCHÉ LA LINEADI COMANDO? Si possono usare tutti i comandi di Git Permette di capire tutte le GUI più velocemente Viene installata con tutte le GUI in tutte le piattaforme Update più frequenti
  • 14.
    14 GIT E WINDOWS Rigadi comando semplice (CONSIGLIATO!) Interfaccia grafica potente Emulatore di console (da usare con git-for-windows) https://git-for-windows.github.io/ https://www.sourcetreeapp.com/ https://conemu.github.io/ Ma la linea di comando offre alcune sorprese...
  • 15.
    15 GIT-GUI Multipiattaforma Pensato per gestirecommit, branch e merge Permette di fare stage selettivo di linea
  • 16.
    16 GITK Multipiattaforma Pensato per gestirelo storico Visualizza il grafico dei commit Permette di fare il blame [bonus] gitk ‐‐follow nome‐file
  • 17.
    17 README.MD Consigliato da GitHub Presentail repository Usa CommonMarkdown
  • 18.
    18 I COMANDI PIÙUSATI git add git diff git branch git push git status git commit git checkout git pull git log
  • 19.
    19 ALTRI COMANDI git clone git [command] ‐‐help /git help [command] git show [object] git config
  • 20.
  • 21.
    21 GIT CONFIG Gestisce configurazioni per macchina(system), utente (global) e repository (local) Con credential.helper=manager usa le credenziali di windows [bonus] crea i tuoi alias git config ‐‐global alias.grog "log ‐‐all ‐‐ decorate ‐‐graph ‐‐oneline"
  • 22.
    22 GIT STASH Permette di salvarevelocemente il proprio lavoro Lo puoi ri-applicare su qualunque branch
  • 23.
    23 “PULL” VS “FETCH&MERGE” pullesegue in contemporanea fetch e merge eseguiti separatamente permettono di capire cosa è successo in remoto indispensabile se si usa rebase o push --force
  • 24.
    24 GIT TAG Permette di etichettarequalunque punto del log Non viene condiviso se non esplicitato Riferimento per usare altri comandi
  • 25.
    25 GIT RESET Riporta la HEADallo stato specificato Usato per togliere dall’index modifiche aggiunte Usato per cancellare commit non condivisi
  • 26.
    26 GIT CLEAN Pulisce velocemente laworking directory git clean –f –n ‐d
  • 27.
    27 GIT REBASE Da usare conmolta attenzione Rende più leggibile la storia Sconsigliato in commit già condivisi Aiuta i mantainer perchè i conflitti vengono risolti prima
  • 28.
    28 DETACHED HEAD Capita usandole GUI Indica la working directory staccata da un branch Aiuta a capire che si potrebbe perdere il lavoro
  • 29.
    29 BREVE STORIA SULLASICUREZZA git commit ­a ­m "HeHeHe" ­­author "Chuck Norris <chuck@is.god>" Ogni commit ha un committer (account usato) e un author In contesti dove la sicurezza è necessaria potrebbe essere necessario usare firme GPG
  • 30.
  • 31.
    31 LINK UTILI La bibbia Impararedai maestri Visual cheatsheet https://git-scm.com/book/en/v2 https://help.github.com/ http://ndpso ware.com/git-cheatsheet.html
  • 32.
    32 DOVE HO RUBATO Videofantastico di Lorna Mitchell Importante articolo sui commit Guida sui flussi di lavoro di Atlassian Indispensabile GitHub Flow Firmate con GPG i vostri commit Git