1 min read

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 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 principale
git 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 master
git 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.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)