Git in pratica e GitHub
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.git2 apportare le modifiche
git checkout -b nuova_feature_x# 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 principalegit pull # prendo eventuali modifiche fatte da altri su master
git checkout nuova_feature_x
# .. altri adattamenti e modifiche
4a Condividere le modifiche aggiornando il proprio repository
git checkout mastergit merge nuova_feature_x # 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.htmlhttp://git.or.cz/gitwiki/GitCheatSheet
http://rails.lighthouseapp.com/projects/8994/sending-patches
http://developer.imendio.com/projects/giggle (Una GUI per Git)