Git bash diff explained

In uno dei nostri articoli precedenti su Git abbiamo spiegato come avere una bash Git configurata secondo alcuni nostri ( miei 😛 ) gusti.

Anche oggi, volendo essere un po’ geek, andremo a sviscerare con attenzione come fare il diff con Git attraverso la linea di comando 🙂

Dai… è divertente! 🙂

Per prima cosa creiamo una cartella di prova sul nostro desktop e creiamoci un repository git:

Poi inseriamo un file (prendiamo l’html di example.org) e lo committiamo.

a questo punto lo apriamo con il nostro editor di testo preferito e ne facciamo alcune modifiche.

Quindi lanciamo il diff per quel file. Ecco che cosa verrà visualizzato (più o meno in base alle vostre modifiche)

Compared Files

Diff ci dice che sta comparando il file “a” che è example.org.txt con il file “b” che è sempre, in questo caso il file example.org.txt ma con le modifiche

File Metadata

Queste sono informazioni molto tecniche che dipendono da come Git identifica gli “oggetti” al suo interno (potete non considerarli per lo scopo di questo articolo)

a/b Identifiers 

Git da degli identificatori per le righe che visualizzerà successivamente per indicare una riga di “a” e una riga di “b”. Qui si vede che le righe di “a” saranno indicate con il simbolo “-” (meno) mentre quelle di “b” con il simbolo “+” (più).

Poiché il diff di un file con la sua versione precedente identifica con  “a” la versione precedente e con “b”  la versione successiva, in questo modo è anche possibile leggere le righe con “-” come eliminate mentre quelle con “+” come aggiunte. Infatti le righe identiche non vengono etichettate.

Chunk Header

Poiché le modifiche ad un file potrebbero espandersi per molte righe di codice, diff cerca di visualizzare solamente degli “spezzoni” (chunk) dove sono presenti le modifiche, tralasciando le molte (o poche) righe identiche tra un chunk e l’altro.

L’header è racchiuso tra i tag @@

All’interno c’è una sezione per il file “a” indicata con il “-” e una per il file “b” indicata con il “+”.

Qui ci viene detto che nel chunk che segue sono visualizzate 7 righe di “a” a partire dalla riga 11 e 7 righe di b a partire dalla riga 11 se abbiamo (come il nostro primo chunk)

@@ -11,7 +11,7@@

Chunk

Nel chunk sono indicate con “-” le righe di “a” eliminate e con “+” le righe di “b” aggiunte. Le righe senza segni sono le stesse in entrambi i file

Git bash diff explained