Modulo 08 — Diffs (confronti)
A cosa serve
Section titled “A cosa serve”git diff mostra le differenze tra: commit, branch, file, working directory e altro. Si usa spesso insieme a git status e git log per farsi un quadro completo del repository.
Le varianti principali
Section titled “Le varianti principali”git diff # working directory vs staging area # (le modifiche NON ancora in staging)git diff HEAD # working directory vs ultimo commit # (tutte le modifiche dall'ultimo commit)git diff --staged # staging area vs ultimo commitgit diff --cached # sinonimo di --stagedgit diff HEAD <file> # limitato a un filegit diff --staged <file> # limitato a un filegit diff branch1..branch2 # tra i tip di due branchgit diff <hash1>..<hash2> # tra due commitgit diff --staged risponde a: “cosa finirebbe nel commit se eseguissi git commit adesso?”
Leggere l’output
Section titled “Leggere l’output”diff --git a/rainbow.txt b/rainbow.txtindex 72d1d5a..f2c8117 100644--- a/rainbow.txt+++ b/rainbow.txt@@ -3,4 +3,5 @@ orange yellow green blue-purple+indigo+violetI file confrontati
Section titled “I file confrontati”git diff dichiara i file confrontati: di solito due versioni dello stesso file. Git chiama i due versioni “A” e “B” — e assegna loro i simboli: A = meno (-), B = più (+).
I metadati
Section titled “I metadati”Le prime righe (index ...) contengono metadati interni: gli hash dei due file confrontati e un identificatore di file mode. Puoi ignorarli.
I chunk
Section titled “I chunk”Le modifiche sono raggruppate in chunk — sezioni di file che contengono cambiamenti. Il chunk header sta tra @@ e @@:
@@ -3,4 +3,5 @@Significa: dal file A partendo dalla riga 3 vengono estratte 4 righe; dal file B dalla riga 3, 5 righe.
Le modifiche
Section titled “Le modifiche”Ogni riga modificata porta un simbolo:
- righe che iniziano con
-: presenti in A, assenti in B (es.purple); - righe che iniziano con
+: presenti in B, assenti in A (es.indigo,violet); - le righe senza simboli sono il contesto, mostrate per orientarsi.
Il @@ -22,6 +22,10 @@ h1 con la descrizione dopo l’head (es. h1) indica inoltre la sezione di codice in cui cade il chunk — molto comodo nei file lunghi.