Tutorial Git - diff per confrontare le differenze
- Controllare le differenze tra la copia di lavoro e il repository
- Strumenti esterni di git diff
- Controllare le differenze tra l’area di staging e il repository
Vi mostreremo come visualizzare le modifiche o le differenze tra la vostra copia di lavoro, ovvero i file su cui state lavorando nei file principali, e il repository. Nella seconda parte, vi mostreremo come fare un confronto tra l’area di staging e il repository.
Controllare le differenze tra la copia di lavoro e il repository
Una volta salvato un file, questo file su una copia di lavoro è diverso da quello del nostro repository. Ma come vediamo esattamente questi cambiamenti? Perché a volte abbiamo fatto alcune modifiche ad un file e vogliamo visualizzare quello nel repository e questo accade spesso quando si lavora con il codice, perché si vuole sapere esattamente le modifiche che si stanno facendo e come questo influirà sul progetto principale.
Quindi la prima cosa che possiamo fare è controllare lo git status
e si trova un file modificato, il che significa che è diverso da quello del progetto principale o del repository principale. Se si digita git diff
e si preme invio, si vedranno le differenze.
$ git diff
diff --git a/test1.txt b/test1.txt
index e1dd8e3..448ad04 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1,2 +1,2 @@
-This is my first Git repository.
-New added text.
\ No newline at end of file
+This was my first Git repository.
+This line is updated.
\ No newline at end of file
Il testo rosso nella bash git mostra cosa c’è nel repository e quello verde indica come il testo è stato modificato.
Se hai più file aggiornati dopo l’ultimo commit, Git elencherà le differenze dei file uno per uno.
Strumenti esterni di git diff
Se non ti sei abituato ad usare lo strumento diff
predefinito, puoi configurare lo difftool
su quello che preferisci.
Ti mostreremo come configurare kdiff3
come strumento diff
, merge
di Git.
Cambiare la directory dei file .gitconfig
Nel sistema operativo Windows, aprire il file .gitconfig
nella directory C:\Users\username
e aggiungere il testo al file,
[diff]
tool = kdiff3
[difftool "kdiff3"]
path = "C:/Program Files/KDiff3/kdiff3.exe"
trustExitCode = false
[difftool]
prompt = false
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = "C:/Program Files/KDiff3/kdiff3.exe"
trustExitCode = false
[mergetool]
keepBackup = false
Qui, path
è il percorso installato di kdiff3
, e potrebbe essere diverso dalla vostra parte.
Configurare difftool
tramite git bash
Si può configurare il difftool
o mergetool
usando anche il comando in git bash.
git config --global --add merge.tool kdiff3
git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add mergetool.kdiff3.trustExitCode false
git config --global --add diff.guitool kdiff3
git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add difftool.kdiff3.trustExitCode false
git config --global --add difftool.prompt false
Ha fatto fondamentalmente la stessa cosa che si fa modificando il contenuto del file .gitconfig
.
Controllare le differenze tra l’area di staging e il repository
Si potrebbe usare il comando git difftool
per rivedere la differenza di file tra quello nella copia di lavoro e quello nel repository.
git diff
mostra la differenza tra la copia di lavoro e il repository, e dopo che il file è già stato aggiunto all’area di staging, git diff
non mostrerà alcuna differenza di questo file perché non confronta l’area di staging con il repository, ecco perché sembra che tutto sia aggiornato, anche se questo file è ancora diverso da quello nel vostro repository.
Il comando giusto per confrontare lo staging sono e il repository è quello di aggiungere l’opzione --staged
dietro git diff
.
$ git diff --staged
diff --git a/test1.txt b/test1.txt
index e1dd8e3..448ad04 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1,2 +1,2 @@
-This is my first Git repository.
-New added text.
\ No newline at end of file
+This was my first Git repository.
+This line is updated.
\ No newline at end of file
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook