Git, semplice e performante: guida illustrata all’utilizzo

Sei un programmatore? Un webmaster? Aggiorni spesso il tuo sito? Hai bisogno di creare un progetto sul quale lavorare in gruppo mantenendo traccia delle modifiche e avendo la possibilità di recuperare diverse versioni di un file o dell’intero progetto? Git è il tuo alleato vincente ed è incluso nei nostri nuovi hosting Web 500, Web 1000, SSD 25, SSD 50 ed SSD 100 .

git

Cos’è Git?

Git (che nello slang americano è tradotto come ‘idiota‘) sviluppato da Linus Torvalds per semplificare lo sviluppo del kernel Linux, oggi è uno degli strumenti di controllo versione più utilizzati. Git quindi è un sistema di controllo di versione distribuito (Distributed Version Control Systems o DVCS).  Cosa vuol dire? Vuol dire che in un sistema di controllo di versione distribuito, ciascun client fa anche da server per se stesso e possiede una copia locale del repository.

git

Git, considera i propri dati come una serie di istantanee di un mini filesystem. Ogni volta che l’utente effettua un commit o salva lo stato del proprio progetto, crea un’immagine di tutti i file presenti in quel momento, salvando un riferimento. Se alcuni file non sono stati modificati, GIT non li clona ma crea un collegamento agli stessi file della versione precedente.

Altro aspetto molto interessante è la possibilità di lavorare anche off-line con il server centrale. L’utente può lavorare sulla propria copia locale del repository e rendere pubbliche le modifiche quando il server torna online.

Come installare Git?

Scaricare Git:
Git per Linux
Git per Windows
Git per OSX

Creare un nuovo repository

Creare una cartella, entrare da linea di comando e lanciare:

Crea un copia del repository

Per creare una copia locale lancia il comando:

Per usare un server remoto, invece, il comando sarà:

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.

git

Aggiunta e validazione
Puoi aggiungere file all’Index del repository usando :

Questo è il primo passo nel flusso di lavoro in git. Per validare queste modifiche fatte si usa:

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

Invio delle modifiche

Quello che hai cambiato ora è nell’HEAD della copia locale. Per inviare queste modifiche al repository remoto, esegui:

Cambia master nel branch al quale vuoi inviare i cambiamenti.
Se non hai copiato un repository esistente, e vuoi connettere il tuo repository ad un server remoto, c’è bisogno che tu lo aggiunga con:

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

I branch (ramificazioni) sono utilizzati per sviluppare features isolate l’una dall’altra. Quando crei un repository, il branch master è quello di default. Puoi usare altri branch per lo sviluppo ed infine incorporarli (‘merge’) nel master branch una volta completati.
git

Crea un nuovo branch chiamato “feature_x” e passa al nuovo branch usando:

Ritorna di nuovo su master:

Cancella il branch creato in precedenza:

Il branch non sarà disponibile agli altri fino a quando non verrà inviato al repository remoto:

Aggiorna e incorpora
Per aggiornare il tuo repository locale al commit più recente, esegui:

Nella tua directory corrente per fare una fetch (recuperare) ed incorporare (merge) le modifiche fatte sul server remoto.

Per incorporare un altro branch nel tuo branch attivo (ad esempio master), utilizza:

In entrambi i casi git prova ad auto-incorporare le modifiche. Sfortunatamente, a volte questa procedura automatizzata non è possibile potrebbero crearsi dei conflitti. Dovrai risolvere manualmente questi conflitti manualmente, modificando i file che git mostrerà.
Dopo aver cambiato questi files, dovrai marcarli come ‘correttamente incorporati’ tramite:

Nb: prima di immettere le modifiche, potrai anche visualizzarne un’anteprima eseguendo:

Tags
È raccomandato creare dei tags nel caso in cui il software venga rilasciato. Questo è un concept già conosciuto, che esiste anche in SVN. Puoi creare un tag chiamato 1.0.0 eseguendo:

La sequenza 1b2e1d63ff sta per i primi 10 caratteri del commit che si vuol referenziare tramite questo tag. Puoi ottenere l’id del commit tramite:

Puoi anche utilizzare meno caratteri per l’id del commit, basta che sia unico.

Sostituire i cambiamenti locali

Nel caso tu abbia fatto qualcosa di sbagliato, puoi sostituire i cambiamenti fatti in locale con il comando:

Questo rimpiazza 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.

Se vuoi in alternativa eliminare tutti i cambiamenti e commits fatti in locale, recupera l’ultima versione dal server e fai puntare il tuo master branch a quella versione in questo modo:

Suggerimenti utili

GUI (Interfaccia utente grafica) per Git disponibile di default:

Colora gli output di Git:

Mostra il log in una riga per commit:

Utilizza l’aggiunta interattiva:

Occhio alle password!

Lo storico del repository è accessibile a tutti gli sviluppatori che lo usano o è addirittura pubblico in alcuni casi (caricato su GitHub, ad esempio), è quindi sempre sconsigliabile far sì che Git non tracci file di configurazione che contengano password ed altre credenziali.

È possibile istruire Git affinché non tracci questi file creando un file .gitignore nella directory principale del repository o in una sua sottodirectory con dentro elencati i file da ignorare, ad esempio:

  • Vogliamo far sì che Git non tenga traccia del file config/config.php
  • Creiamo nella directory principale in file chiamato .gitignore che contenga:

  • Ed aggiungiamo il file .gitignore al repository:

In questo modo il file verrà ignorato e non sarà nemmeno possibile aggiungerlo accidentalmente col comando git add.

Links e risorse

Clients grafici

GitX (L) (OSX, open source) 

Tower (OSX)

Source Tree (OSX, free)

GitHub per Mac (OSX, free) 

GitBox (OSX)

Le guide

Git Community Book

Pro Git

Think like a git

GitHub Help

A Visual Git Guide

Image credits

Git-tower.com