introduzione a git
Post on 07-Dec-2014
1.383 Views
Preview:
DESCRIPTION
TRANSCRIPT
Introduzione a GIT Il sistema di Source Control distribuito
PHP User Group Friuli, 27/06/2012
STEFANO VALLE
http://www.mvassociati.it/
http://friuli.grusp.org/
Chi usa GIT?
5
COME SIAMO ARRIVATI A GIT?
7
8
CVS >> SVN
10
SVN >> GIT
Perché è diverso?
11
E’ MOLTO VELOCE
E’ Distribuito
Pro Git - http://git-scm.com/book
PERMETTE DI LAVORARE OFFLINE
Incoraggia sviluppo non lineare
Pro Git - http://git-scm.com/book
Come funzionano gli altri?
16
Pro Git - http://git-scm.com/book
Come funziona GIT?
17
Pro Git - http://git-scm.com/book
LE BASI
Installare Git • Debian/Ubuntu
apt-get install git-core
• RedHat/Fedora/CentOS yum install git
• Disponibile per altre distribuzioni e SO:
http://git-scm.com/downloads
19
Configurare Git • Identità:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
• Editor:
git config --global core.editor emacs
• Verifica parametri: git config --list
20
«helper» per la console
21
Disponibili anche GUI
22
PARTIAMO!
init
• Inizializza un nuovo repository all’interno della cartella corrente
• Crea la sottocartella .git che conterrà tutti i file ad uso interno di git
24
clone
• Clona un repository git esistente
25
add
• Aggiunge un nuovo file a git, che da quel momento ne terrà traccia
• Aggiunge un file modificato all’area di staging (che vediamo fra poco)
26
commit
• Memorizza lo snapshot delle modifiche fatte
• Obbligatorio inserire un messaggio • Identificato da hash SHA-1
27
Struttura di un commit
28
Ciclo di vita di un file
29
Non gestito Non
modificato Modificato In stage
aggiunta del file
modifica del file
staging del file
rimozione del file
commit
status
• Mostra lo stato in cui si trovano i file del repository
30
log
• Mostra la storia dei commit • Per ciascuno elenca autore e messaggio
31
DEMO 1
branch
• La killer feature di GIT! • Consente di continuare lo sviluppo su una
nuova feature senza impattare sul lavoro corrente
33
Un po’ di internals
34
Pro Git - http://git-scm.com/book
git branch testing
35
Pro Git - http://git-scm.com/book
Su quale branch stiamo lavorando?
36
Pro Git - http://git-scm.com/book
checkout
• Consente di passare da un branch all’altro • (o anche da un commit all’altro)
37
git checkout testing
38
Pro Git - http://git-scm.com/book
DEMO 2 - BRANCHING
merge
• Incorpora sul branch principale le modifiche fatte su un altro branch
• Assieme a branch, è un altro comando che git incentiva ad usare spesso
40
merge
41
fast-forward
Pro Git - http://git-scm.com/book
merge
42
Non fast-forward
Pro Git - http://git-scm.com/book
DEMO 2 – OPERAZIONI DI MERGE
L’IMPREVISTO: I CONFLITTI
rebase
• Altro modo per integrare le modifiche di un branch
• Prende linearmente tutte le modifiche fatte su un branch e le applica ad un altro
45
rebase
46
Pro Git - http://git-scm.com/book
Merge Prende gli ultimi commit e li «mette assieme», creando un nuovo commit di merge
Rebase Applica le modifiche di un branch linearmente su un nuovo branch
47
Pro Git - http://git-scm.com/book
Git distribuito
48
repository condiviso
sviluppatore 1 sviluppatore 2 sviluppatore 3
remote
• Consente di gestire repository remoti • Sincronizzandoli con il proprio repo locale
49
fetch
• Scarica branch e dati da un repository remoto
50
pull
• Scarica dati da un repository remoto e tenta di fare il merge con il branch corrente
• pull = fetch + merge
51
push
• Invia branch e dati ad un repository remoto
• Consente di aggiornare il repository remoto con le modifiche fatte localmente
52
DEMO 3 - REBASE
I REPOSITORY PUBBLICI
Github
55
Bitbucket
56
DEMO 4 – GIT WORKFLOW
Premessa • Usate git per qualsiasi progetto • Anche se sviluppate da soli • Anche se lavorate solo in locale
58
Branches
59
Long-running branches • master
– Allineato con versione on-line
• develop – Allineato con versione in sviluppo
60
Topic branches • Branch in cui sviluppare feature • Feature terminata (e testata)? merge su
develop • Al termine, il branch viene cancellato
61
Hotfix branches • Per bug fix / interventi veloci • Fix terminato, merge su develop • Cancellato al termine del merge • Ha una vita molto breve
62
COMANDI UTILI
diff
• Mostra le differenze introdotte dalle modifiche non committate
64
tag
• Consente di contrassegnare un commit • Spesso usato per identificare le versioni
del progetto
65
stash
• Salva temporaneamente il contenuto della working directory, ripulendola
• Consente di cambiare branch in qualsiasi momento
66
reset
• Il comando più ambiguo! • Consente di:
– Togliere file dallo staging – Eliminare definitivamente file dallo staging – Riavvolgere storia commit
67
revert
• Consente di annullare uno o più commit • Crea un nuovo commit che annulla
l’effetto dei commit da eliminare
68
submodule
• Consente di includere un repository git all’interno del proprio progetto git
• Utile per caricare librerie esterne
69
BEST PRACTICES
Commit • Fare commit spesso • Un commit deve inglobare un insieme
atomico di modifiche • NON lavorare N giorni in attesa di aver
finito il task! • Al massimo fare tutti i commit alla fine,
sfruttando lo staging
71
Testo del commit • Sommario da max 50 caratteri • Seguito (eventualmente) da descrizione
più dettagliata • Forma imperativa (es. «Add products
section», ...)
72
COMMIT E PUSH PRIMA DEL COLLEGA!
LAVORARE TUTTI SUL MASTER, HUH?
TESTARE IL CODICE PRIMA DI COMMITTARLO
Decidere un workflow
76
LAVORARE CON GIT E’ PIACEVOLE
Per approfondire:
• Pro git: http://git-scm.com/book
• http://gitref.org/ • http://gitready.com/
78
DUBBI? DOMANDE?
http://www.hubme.in/
Grazie per l’attenzione
@stefanovalle s.valle@mvassociati.it Stefano Valle
Referenze Immagini • http://www.flickr.com/photos/boston_public_library/6323438849/ • http://www.flickr.com/photos/a03575/3632344397/
• http://www.flickr.com/photos/chiperoni/3456589962/ • http://www.flickr.com/photos/53370644@N06/4976492450 • http://www.flickr.com/photos/lululemonathletica/4911299076/ • http://www.flickr.com/photos/psi_mon/3473153641/
• http://www.flickr.com/photos/masstravel/7454482646/ • http://www.flickr.com/photos/53370644@N06/4976497160/ • http://www.flickr.com/photos/53370644@N06/4975888229/
• http://www.flickr.com/photos/53370644@N06/4976490816/
• http://www.flickr.com/photos/visualgrammar/2997271008/ • http://www.flickr.com/photos/ejcdelahoya/2504629292/ • http://www.flickr.com/photos/altuwa/3582839737 • http://www.flickr.com/photos/marine_corps/5132830788/
• http://www.flickr.com/photos/72213316@N00/5028110521/ • http://www.flickr.com/photos/stevengrayphotography/6893446706/
top related