Guida – Git, cos’è e come si usa

Git, semplice e performante. Guida 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, se scegli i nostri nuovi hosting Pro, Top, Gold e Platinum il supporto per Git è incluso.

git

Cos’è Git?

Git è un sistema di controllo di versione distribuito (Distributed Version Control Systems o DVCS) sviluppato da Linus Torvalds che sta diventando rapidamente uno dei più diffusi in circolazione. 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.
git

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 proporre modifiche (aggiungendole all’Index) 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’e’ 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 alla 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 della commit tramite:

Puoi anche utilizzare meno caratteri per l’id della 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.

 

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

  • Vogliamo far si 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

Vuoi stampare e conservare questa guida? Scarica la Guida Git in pdf

 

Image credits: Git-tower.com

Tag: