Introduzione

Guida essenziale per iniziare ad utilizzare Git 2.x.

Prerequisiti

Installa e configura Git su Ubuntu: Segui questa guida

Creare un nuovo repository

Crea una nuova cartella, da terminale:
mkdir nuovacartella

Entriamoci e creiamo un nuovo repository Git con i seguenti comandi:
cd nuovacartella
git init

Checkout di un repository

Crea una copia di un repository locale eseguendo da terminale il comando:
git clone /percorso/del/repository

Usando invece un server remoto, il comando sarà:
git clone [email protected]:/percorso/del/repository

Ambiente di lavoro

La tua copia locale del repository è composta da tre "alberi" mantenuti da git. Il primo è la tua Directory di lavoro che contiene i files attuali. Il secondo è l'Index che fa da spazio di transito per i files e per finire l'HEAD che punta all'ultimo commit fatto.

Effettuare delle modifiche

Dopo aver modificato i file interessati puoi aggiungerli all'index con i seguenti comandi.
Per specificare un file:
git add <nomedelfile>

Per selezionare tutti i file: nuovi, modificati e cancellati:
git add -A

Oppure:
git add --all

Il seguente comando non presenta differenze rispetto a git add -A, quindi è possibile utilizzarli allo stesso modo:
git add .

Se non si vuole selezionare i file cancellati:
git add --ignore-removal .

Se si vuole selezionare solamente i file modificati e cancellati, quindi non i nuovi:
git add -u

Oppure:
git add --update

Per validare queste modifiche fatte da terminale:
git commit -m "Messaggio"

Ora il file è correttamente nell'HEAD, ma non ancora nel repository remoto.

Inviare le modifiche

Le modifiche che hai effettuare ora si trovano nell'HEAD della copia locale. Per inviare queste modifiche al repository remoto, dai questo comando:
git push origin master

Se non si vuole inviare direttamente le modifiche al branch principale (master) è possibile cambiare master con il branch al quale vuoi inviare i cambiamenti:
git push origin nome_del_branch

Se non hai copiato un repository esistente, e vuoi connettere il tuo repository ad un server remoto, devi aggiungerlo con il seguente comando:
git remote add origin <indirizzo_del_repository>

Ora sarai in grado di inviare le tue modifiche al server remoto.

Branching

I branch ('ramificazioni') sono utilizzati per sviluppare features che sono isolate l'una dall'altra. Il branch master è quello di default quando crei un repository. Puoi usare altri branch per lo sviluppo ed infine incorporarli ('merge') nel master branch una volta completati.

Crea un nuovo branch chiamato "mio_branch" e passa al nuovo branch:
git checkout -b mio_branch

Per cancellare un branch bisogna prima tornare su quello principale o su un'altro branch:
git checkout master

Quindi per cancellare il branch creato in precedenza:
git branch -d mio_branch

Il branch non potrà essere utilizzatao da altri fino a quando non verrà inviato al repository remoto:
git push origin <nome_del_branch>

Aggiorna e unisci

Per aggiornare il tuo repository locale al commit più recente in remoto:
git pull

Puoi incorporare un altro branch nel tuo branch attivo (ad esempio master).
Ad esempio se vuoi unire il tuo branch al principale master, devi prima passare su master:
git checkout master

Quindi per unire il tuo branch al master:
git merge <nome_del_branch>

Git proverà ad unire le modifiche in automatico. In alcuni casi potrebbero esserci dei conflitti. Dopo aver cambiato i file con conflitti, dovrai marcarli come 'corretti' tramite questo comando:
git add <nomedelfile>

Prima di immettere le modifiche, potrai anche visualizzarne un'anteprima:
git diff <branch_sorgente> <branch_target>

Tags

È raccomandato creare dei tags nel caso in cui il software venga rilasciato. Puoi creare un tag chiamato 1.0.0 eseguendo questo comando:
git tag 1.0.0 4b5e4d64ff
la sequenza 4b5e4d64ff sta per i primi 10 caratteri del commit che si vuol referenziare tramite questo tag. Puoi ottenere l'id del commit:
git log

Si possono utilizzare anche meno caratteri per l'id del commit, basta che sia unico.

Sostituire modifiche in locale

Nel caso tu abbia commesso qualche errore puoi sostituire i cambiamenti fatti in locale con il comando:
git checkout -- <nomedelfile>

Con questo comando si sostituiscono le modifiche nell'albero di lavoro con l'ultimo contenuto presente in HEAD. I cambiamenti fatti ed aggiunti all'index, così come i nuovi files, verranno mantenuti.

Altrimenti se vuoi eliminare tutte le modifiche e commits effettuati in locale, puoi recuperare l'ultima versione dal server e far puntare il tuo master branch alla versione principale in questo modo:
git fetch origin
git reset --hard origin/master

La guida è terminata.