[[git guida pratica]] ====== 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 è [[http://git-scm.com|git]], creato nientepopodimeno che da [[https://plus.google.com/+LinusTorvalds|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 Per controllare i file già presenti nel repository ed aggiungerli al commit se sono stati modificati git add -u 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 uniremo il branch, il tutto con i comandi git checkout master git merge v2.1.x Se invece vogliamo sostituire un branch, ad esempio master, con un altro, ad esempio dev, usiamo i comandi git checkout dev git merge -s ours master git checkout master git merge dev ===== 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: * [[http://git-scm.com/book/it]] * [[http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/it/index.html]] * [[https://drupal.org/node/1066342]] Buon controllo di versione a tutti!