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)

commenti

Il Pc si inchioda....

Salve ho provato a far andare OpenArena con un PC con sempron 2800 AM2, 1.5GB Ram e Sk Video 256 GeForce 6200 AGP. Uso Ubuntu 8.04, come lancio il gioco, schermata bianca e si inchioda.... per riprendere il controllo del PC devo unsare la combinazione di tasti Ctrl+Alt+Backspace. Mi sapete dare info in merito? Grazie.

ehm.. forse hai sbagliato post

Prova ad aprire il terminale e lanciare openarena, vedi se ti dice qualcosa di più