Git è il VCS, secondo Linus Torvalds, che è stato scelto per Linux, Freedesktop, Ruby on Rails e altri progetti importanti.
Il perché si può riassumere in prestazioni e decentramento. Git è molto veloce e permette di mantenere traccia delle modifiche senza essere online.
1a Iniziare un proprio progetto
cd mio-progetto/
git init # crea la configurazione in .git/
git add . # aggiunge tutti i file presenti
git commit -m "progetto iniziale"
1b Iniziare prendendo il codice da un progetto già esistente
git clone git://sitoweb.com/mio-progetto.git
2 apportare le modifiche
git checkout -b nuovafeaturex
Fai ora le tuo modifiche sensazionali
git status # vedi cosa hai modificato
git commit -m "ottimizzo qui, ottimizzo lì"
... altre modifiche
3 Sincronizzarsi nel frattempo con le modifiche altrui
git checkout master # torno nel ramo principale
git pull # prendo eventuali modifiche fatte da altri su master
git checkout nuovafeaturex
.. altri adattamenti e modifiche
4a Condividere le modifiche aggiornando il proprio repository
git checkout master
git merge nuovafeaturex # il nuovo ramo viene unito a master
git push # aggiorna il repository remoto
4b Condividere le modifiche con una patch
git format-patch master --stdout > tutte-modifiche-del-mio-ramo-su-master.diff
..e inviarla a qualcuno.
Per annullare le modifiche locali:
git checkout -f
4c Mantenere un fork remoto
Se state modificando un progetto non vostro potete mantenere aggiornato il vostro fork, con GitHub questa operazione è molto semplice.
Innanzi tutto impostate il progetto di riferimento del vostro fork (per esempio su Github)
git remote add tiziomaster git://github.com/tizio/programma.git
tizio è il programmatore ufficiale, dopodiché reimportare le sue nuove modifiche nel vostro branch master.
git fetch tiziomaster
git merge tiziomaster/master
git commit -a -m "Sincronizzato il fork alle ultime modifiche ufficiali"
Altre risorse utili
http://git.or.cz/course/svn.html
http://git.or.cz/gitwiki/GitCheatSheet
http://rails.lighthouseapp.com/projects/8994/sending-patches
http://developer.imendio.com/projects/giggle (Una GUI per Git)