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.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)

corso javascript