Questa è una vecchia versione del documento!
git: guida pratica
git e il controllo di versione
Lavorando su progetti complessi distribuiti su più file, sicuramente avrete sentito parlare di controllo di versione. Se non ne avete mai sentito parlare vi rimando alla pagina http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/it/ch01.html che permette di apprendere velocemente di cosa si tratta.
Uno dei software attualmente più diffusi per il controllo di versione è git, creato nientepopodimeno che da Linus Torvalds. D'altronde se sei Linus Torvalds e hai bisogno di un software, cosa fai, lo compri? Assolutamente no, lo scrivi
~~READMORE~~
Repository
Per creare un nuovo progetto da gestire con il controllo di versione (d'ora in poi repository), creiamo una directory, ci entriamo e digitiamo
git init
Se invece il repository esiste già su un server remoto, il comando sarà
git clone nomeutente@host:/percorso/del/repository
Aggiunta e modifica di file
Per aggiungere file al repository, o per segnalare al sistema che un file è stato modificato, usiamo il comando
git add nome-file
Terminate le modifiche ai file, segnalati con il comando git add, validiamo le modifiche (creiamo il commit)
git commit -m "Messaggio per il commit"
Per caricare in remoto le modifiche apportate (il commit) usiamo
git push
Infine per scaricare su un altra macchina gli aggiornamenti caricati in remoto usiamo il comando
git pull
Tags
I tag sono utili per contrassegnare le versioni significative del nostro progetto, spesso vengono usati per individuare le varie release.
Per creare un tag, dalla directory del progetto digitiamo
git tag -a v1.4 -m 'versione 1.4'
Una volta creato il tag dobbiamo caricarlo sul repository. Non è sufficiente il comando git push da solo, dobbiamo specificare l'opzione –tags
git push --tags
Per verificare i tag già creati usiamo
git tag -l
Se invece vogliamo cancellare il tag “nome-tag” digitiamo
git tag -d nome-tag git push origin :nome-tag
Branches
I branch sono usati per gestire diverse “linee di sviluppo” del nostro progetto, di modo da poter sperimentare nuove funzionalità senza compromettere la stabilità del codice del repository principale.
Per creare un nuovo branch
git checkout -b v2.1.x
Una volta creato il branch localmente, lo carichiamo in remoto con il comando
git push origin v2.1.x
Per verificare i branch disponibili in remoto diamo il comando
git branch -r
Per lavorare con il nuovo branch
git checkout v2.1.x
Per verificare quanti branch abbiamo
git branch -v
Il branch con l'asterisco a fianco è il branch attivo
% git branch -v * v2.1.x 170eb10 Initial commit. master 170eb10 Initial commit.
I comandi per cancellare il branch “v2.1.x” sono
git branch -d v2.1.x git push origin :v2.1.x
E' opportuno che il nome di un branch non coincida con il nome di un tag. Se per sbaglio questo è accaduto, e vogliamo cancellare il branch, dopo aver dato git branch -d nome-branch, digitiamo
git push origin :refs/heads/nome-branch
Al contrario, nel caso dei tag, dopo aver digitato git tag -d nome-tag digitiamo
git push origin :refs/tags/nome-tag
Ad un certo punto, dopo aver, ad esempio, implementato e testato nuove funzionalità, supponiamo di voler unire il branch v2.1.x con il repository master. Creeremo una copia del repositori master e vi uniermo il branch, il tutto con i comandi
git checkout master git merge v2.1.x
Per approfondire
Nell'articolo mi sono limitato a descrivere semplici casistiche di impiego, nel caso vi troviate in situazioni più esotiche o anche solo per approfondire le potenzialità del programma, vi rimando ai link seguenti:
Buon controllo di versione a tutti!