2. 1 Version control
Motivazione
Requisiti
Applicazioni
Esempi
2 git - Introduzione
Perché git
Un po’ di storia
Princìpi
3 git - Funzionamento
Repository
Commit
Branch
History
4 git - CLI
Considerazioni iniziali
5 git - Demo
Revisionare, tracciare, collaborare - version control con git fales
3. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Motivazione
Lo realizzazione di un’opera d’ingegno
(programma, libro, opera architettonica) è
un processo iterativo, e collaborarivo
Revisionare, tracciare, collaborare - version control con git fales
4. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Requisiti
Le problematiche che ci si trova ad affrontare sono:
Gestire le varie versioni, o revisioni
Tenere traccia delle singole modifiche
Assicurarsi che tutti gli autori abbiano sempre a disposizione
l’ultima versione
Revisionare, tracciare, collaborare - version control con git fales
5. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Applicazioni
Codice sorgente
Documentazione
Libri / Pubblicazioni
Progetti ingegneristici
Lungometraggi animati
...
Revisionare, tracciare, collaborare - version control con git fales
6. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Esempi
CVS / SVN
Mercurial
Bitkeeper
Perforce
git
Revisionare, tracciare, collaborare - version control con git fales
7. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Introduzione a git
Revisionare, tracciare, collaborare - version control con git fales
8. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Perché git
Open Source
Distribuito
Veloce
Design semplice
Pensato per la collaborazione (sviluppo parallelo)
In grado di gestire progetti di grandi dimensioni come il kernel
Linux
Revisionare, tracciare, collaborare - version control con git fales
9. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Un po’ di storia
Creato da Linus Torvalds nel 2005 per il kernel Linux
Prendendo come riferimento Bitkeeper sulle cose da fare
Prendendo come riferimento CVS sulle cose da NON fare
Da alcuni anni mantenuto da Junio Hamano (濱野 純)
For the first 10 year of kernel maintenance we literally used tarball and patches, which
is a much superior source control management than CVS - Linux Torvalds
Revisionare, tracciare, collaborare - version control con git fales
10. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Princìpi
–fast-version-control
–everything-is-local
–distributed-even-if-your-workflow-isnt
–local-branching-on-the-cheap
Revisionare, tracciare, collaborare - version control con git fales
11. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Funzionamento di git
Revisionare, tracciare, collaborare - version control con git fales
12. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Repository
È una cartella contenente
tutte le informazioni di
cui git ha bisogno.
(cartella .git/)
Questa cartella può
trovarsi su un server
remoto.
git è distribuito, quando si
scaricano le informazioni
git da remoto si crea una
copia locale e completa.
Centralizzato vs Distribuito
Revisionare, tracciare, collaborare - version control con git fales
13. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Commit
Un commit è fondamentalmente l’operazione con cui si crea
una nuova versione, o revisione.
Può essere visto come una modifica rispetto alla versione
precendente (altri)
Oppure come il salvataggio dello stato attuale del sistema (git)
Revisionare, tracciare, collaborare - version control con git fales
14. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Commit - Altri VCS
Le versioni sono gestite come differenze sequenziali rispetto alla verione precente
Revisionare, tracciare, collaborare - version control con git fales
15. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Commit - git
Le versioni sono gestite come snapshots, fotografie del contenuto dei file ad un dato momento
Revisionare, tracciare, collaborare - version control con git fales
16. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Commit - Workflow
Modifichi la working directory
Fai lo stage dei file, aggiungendo
uno snapshot alla staging area.
Fai il commit, che fa uno
snapshot permanente della
staging area nel repository (.git)
Modified = File modificato
Staged = File modificato ed aggiunto alla
staging area
Modify, Stage, Commit
Revisionare, tracciare, collaborare - version control con git fales
17. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Commit - Internals
Un commit contiene:
La descrizione (come contenuto)
Autore e Commiter (con relative date)
Un albero (tree) contenente puntatori ai file
Un puntatore al commit precedente (null per il primo commit)
A commit and its tree
Revisionare, tracciare, collaborare - version control con git fales
18. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Commit - Internals (I)
Revisionare, tracciare, collaborare - version control con git fales
19. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Branch
Ricorda! Git non salva i dati come una serie di modifiche, o differenze, ma come una
serie di istantanee.
Revisionare, tracciare, collaborare - version control con git fales
20. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Branch (II)
I branch non sono altro che riferimenti/puntatori a uno specifico
commit.
Revisionare, tracciare, collaborare - version control con git fales
21. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Branch - Workflow
Esitono varie strategie di utilizzo di dei branch durante lo sviluppo.
La mia preferita è la seguente:
1. Branch - Crea un branch dal ramo principale
2. Sviluppa - Aggiungi commit al tuo branch
3. Rebase - Fai il rebase del tuo branch sull’ultima versione del ramo
principale
4. Merge - Fai il merge del tuo branch sul ramo principale
Revisionare, tracciare, collaborare - version control con git fales
22. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Branch - Workflow (II)
Master/Develop workflow
Revisionare, tracciare, collaborare - version control con git fales
23. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
History
Visualizzare i singoli contrbuti
Visualizzare il workflow e le contribuzioni
Revisionare, tracciare, collaborare - version control con git fales
24. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Introduzione a git CLI
Esistono diverse interfacce grafiche per git
L’interfaccia da linea di comando è quella usata dagli
sviluppatori di git come riferimento
L’interfaccia CLI supporta tutte le funzioni di git
Revisionare, tracciare, collaborare - version control con git fales
25. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
git - Demo
Time for a Demo!
Revisionare, tracciare, collaborare - version control con git fales
26. Version control git - Introduzione git - Funzionamento git - CLI git - Demo Fine
Link utili
Sito ufficiale
git-scm.com
Documentazione in italiano
git-scm.com/book/it/v1
Revisionare, tracciare, collaborare - version control con git fales