git

Le basi di git

Nel primo articolo, abbiamo introdotto e mostrato come installare git, in questo nuovo articolo mostreremo come gestire un progetto con git e quali sono i principali comandi.

Esistono due modi per gestire un progetto con git, il primo è quello di inizializzare un nuovo archivio git in una directory esistente, il secondo consiste nel clonare un progetto git esistente da un server o da un altro repository.

Gestire un nuovo progetto con git

Supponiamo di avere una cartella, di nome primo-progetto, contenente i file del nostro progetto e di voler gestire le versioni dei file durante tutto il percorso di sviluppo. La prima cosa che occorre fare è posizionarsi all’interno della cartella e inizializzare un repository git mediante il comando seguente:

git init

Dopo aver confermato il comando, verrà creata, all’interno della cartella primo-progetto,  una cartella con nome .git destinata a contenere tutti i file del repository necessari al controllo delle versioni.

Dopo l’inizializzazione dell’archivio, nessun file è stato ancora tracciato, per iniziare il tracciamento occorre marcare  i file che si vogliono aggiungere al repository e poi  confermare la loro registrazione. I comandi per adempiere a quanto appena detto sono i seguenti:

git add .


git commit -m "descrizione delle modifiche"

Il primo comando marca tutti i file perché vengano aggiunti, con il successivo commit, al repository. Il punto sta ad indicare che vanno aggiunti tutti i file e directory presenti all’interno della cartella primo-progetto; se avessi voluto marcare solo specifici file, avrei potuto elencarli, ad esempio git add *.c  indica di marcare solo i file con estensione .c. Mediante il comando add i file coinvolti vengono aggiunti alla staging area per il successivo commit.

Il secondo comando, commit, aggiunge tutti i file presenti nella staging area al repository git. L’opzione -m, del comando, sta per messaggio ed il testo che la segue, tra virgolette, rappresenta una descrizione dello stato attuale del progetto, in modo che in futuro, quando le istantanee/snapshot saranno tante,  l’utente abbia una qualche informazione sullo stato del progetto all’atto del commit.

Clonare un repository esistente

Se si desidera contribuire ad un progetto o semplicemente fare una copia di un progetto da un’altra parte, il comando da usare è git clone,  la sintassi per clonare un progetto è la seguente:

git clone [url del progetto]

es.

git clone https://github.com/fchiriaco/upload-file-jquery.git

Questo comando crea la cartella upload-file-jquery nel proprio computer e inizializza al suo interno la cartella .git, tutti i file del progetto vengono copiati nella nuova cartella. A questo punto si può iniziare a lavorare ed apportare il proprio contributo al progetto. Qualora si volesse utilizzare un altro nome per la cartella di destinazione, questo andrebbe specificato come secondo parametro del comando:

git clone https://github.com/fchiriaco/upload-file-jquery.git nome-cartella-dest

Un’altra precisazione che va fatta è che git clone può essere fatto non solo utilizzando il protocollo https, ma anche altri, come ad esempio ssh,  la copia precedente poteva anche essere fatta così:

git clone git@github.com:nomeutente/upload-file-jquery.git

Usiamo git per gestire le versioni del nostro progetto

Supponiamo di trovarci all’interno della cartella che conterrà il nostro progetto e di voler utilizzare git per gestire le varie versioni che riterremo opportuno salvare.

La prima cosa, come già abbiamo visto sopra, è quella di inizializzare il nostro repository con il comando

git init

interroghiamo ora git sullo stato dei file del progetto, il comando per farlo è

git status

git risponderà segnalando che ci sono file modificati e non tracciati.

Provvediamo quindi ad aggiungere alla staging area i file del progetto mediante il comando

git add .

digitiamo di nuovo git status e git ci segnalerà che ci sono dei file in attesa di commit.

A questo punto provvediamo al nostro  primo commit, che creerà la prima istantanea dei file del nostro progetto, ecco il comando

git commit -m "Primo commit progetto di esempio"

Se ora chiedo ancora informazioni sullo stato, git risponderà che non ci sono operazioni pendenti e che tutti i file sono allineati con il nostro repository.

Escludere file dal tracciamento .gitignore

Tra i file del nostro progetto ce ne potrebbero essere alcuni che non vogliamo tracciare e di cui non ci interessa tenere traccia delle modifiche. In questo caso  è di supporto creare nella working directory un file con nome .gitignore e al suo interno elencare, anche con l’ausilio di caratteri jolly ed espressioni regolari, tutti i file che git deve ignorare e non deve includere nel repository.

Un esempio di file .gitignore potrebbe essere il seguente:

#file esclusi dal tracciamento
#ignora i file con estenzione .obj
*.obj

#ignora i file con estenzione .txt
*.txt

#ignora i file con estenzione .pdf della cartella doc
doc/*.pdf

#ignora il file lista.doc della cartella appunti
appunti/lista.doc

Comando git diff

Un altro comando git molto utile è   git diff che mostra le differenze tra il contenuto dei file presenti nella working directory ed il contenuto del repository. Se invece vogliamo vedere le differenze tra ciò che è presente nella staging area e che sarà oggetto del prossimo commit, allora occorre digitare il comando git diff --staged

Tutto con un unico comando

Un utile comando scorciatoia  che mi permette di fare entrambe le operazioni insieme, aggiunta alla staging area e commit,  è  git commit -a -m "secondo commit", nota bene…questo comando funziona solo se i file modificati sono già presenti nel repository, non funziona con i file di nuova creazione.

Rimmozione e spostamento di file

Per rimuovere un file da git occorre prima rimuoverlo dai file già tracciati e poi fare un nuovo commit:

git rm nomefile

git commit -m "Cancellato dal progetto nomefile"

Un comando anologo viene usato per rinominare o spostare in altra directory un file

git mv nomefile nuovonomefile

git commit  -m "Rinominato nomefile in nuovonomefile"

Elenco commit

Come ultimo comando citiamo quello che ci permette di vedere l’elenco di tutti i commit fatti e del codice HASH associato a ciascun commit.

git log

avremo in risposta un elenco simile a questo

commit ca82a6dff817ec66f44342007202690a93763949
Author: Francesco Chiriaco <nome@indirizzomail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Francesco Chiriaco <nome@indirizzomail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Francesco Chiriaco <nome@indirizzomail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
Primo commit

Come si vede, ad ogni commit è associata una chiave hash che verrà utilizzata come riferimento per un futuro checkout nella working directory (richiamare quella versione specifica nella nostra cartella di lavoro) o per altre operazioni su quello specifico commit. L’elenco prodotto dal comando log mostra anche l’autore del commit, la data e la descrizione associata.


Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *