devdev / in the loop
Git Git

Guida al versioning con Git
Salvare le modifiche (git commit)

Ora che sappiamo come aggiungere e rimuovere file dall’area di stage, è ora di imparare il comando finale che salva lo stato attuale del nostro progetto e crea una nuova istantanea (snapshot ), cioè git commit .

Ricorda che soltanto quello che è presente nell’area di stage verrà committato! I file non tracciati o modificati e non aggiunti con git add  all’area di stage non saranno compresi in questo salvataggio. Quando creiamo un commit è una buona prassi scrivere un piccolo messaggio con il contenuto delle modifiche: è una buona abitudine che ti sarà sicuramente utile in futuro.

$ git commit -m "Questo è il primo commit"
[master 51f1c0a] Questo è il primo commit
 2 files changed, 30 insertions(+)
 create mode 100644 text.txt
 create mode 100644 index.php

Fatto. Hai creato la tua prima commit con un messaggio. A questo punto, Git ti mostra rapidamente tutte le modifiche assieme a due informazioni molto importanti. La prima è master , cioè il ramo in cui l’hai fatta, e la seconda è un piccolo codice, che è il checksum del commit. In sostanza è la firma di tale operazione e sarà utile in futuro per identificare questo commit.

Cosa ho modificato?

Per visualizzare le modifiche che abbiamo effettuato sui file di lavoro, possiamo usare il comando git diff . Puoi vedere 2 tipi di modifiche: quelle presenti su file che ancora non abbiamo messo nello stage; oppure quelle  presenti sui file in stage e non ancora committati.

Nel primo caso, dopo un commit, abbiamo modificato nuovamente un file e abbiamo lanciato il comando git diff  prima di metterlo nello stage:

$ git diff
diff --git a/index.php b/index.php
index 64b781c..156624f 100644
--- a/testi index.php     
+++ b/testi index.php     
@@ -1,2 +1,2 @@
-testo rimosso
+righe aggiunte
 bla bla bla

Questo esempio ci mostra che nel file index.php  abbiamo tolgo la riga “testo rimosso” e abbiamo aggiunto due righe, “righe aggiunte” e “bla bla bla”. Se proviamo ad aggiungere questo file allo stage con git add index.php  e rilanciamo il comando git diff  non otterremo risposta!

Questo perché per vedere le differenze con dei file già presenti nello stage, dobbiamo usare l’opzione –staged :

$ git diff --staged

Annullare l’ultima commit

Come ci siamo già detto, Git è un sistema completo che vi permette di.. tornare facilmente indietro nel tempo. Se, subito dopo una commit, avete dimenticato qualcosa e non volete ri-aggiungere il file e dover fare una nuova commit, ma semplicemente modificare l’ultima potreste voler usare l’opzione –amend.

git commit -m "messaggio"
git add prodotto.php
git commit --amend -m "questo messaggio sovrascrive il primo"

Come vedete, è possibile sovrascrivere il messaggio della commit. Se invece volete lasciarlo inalterato, possiamo usare l’opzione –no-edit :

git commit -m "messaggio"
git add prodotto.php
git commit --amend --no-edit

Avremo sostituito la precedente commit lasciandone inalterato il messaggio ma con la versione aggiornata del file prodotto.php.

 

Vedere una vecchia versione

Se volessimo visualizzare una versione passata, possiamo farlo facilmente con il comando git checkout . Questo comando sposta nel tempo il repository ripristinando i file del nostro progetto alla versione desiderata. Per prima cosa, vediamo come si fa a tornare al presente, prima di andare nel passato.

git checkout master

Per il momento accontentiamoci di sapere che master è il ramo principale di ogni progetto, parleremo dei branch  in seguito.

Se volessimo tornare ad un certo commit precedente, la prima cosa da sapere è il codice, la sua firma. Nell’esempio precedente abbiamo un commit marcato 51f1c0a. Per portare il progetto a quello stato usiamo:

git checkout 51f1c0a

Ora nella nostra cartella di lavoro tutti i file saranno stati riportati indietro. È importante sapere che questa può essere considerata un’operazione di sola lettura, il nostro stato attuale non è stato sovrascritto da quello passato: diciamo solo che stiamo dando uno sguardo a com’era il progetto ai tempi di quel dato commit. Per tornare allo stato attuale, come abbiamo anticipato, dobbiamo usare il comando git checkout master .

Capitolo successivo → Le ramificazioni (branch)
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.