Afficher les différences entre la copie de travail courante et le dernier commit :
Les différences retournées n’ont pas encore été ajoutées à l’index. Ce sont les modifications de l’espace de travail qui seront ajoutées à l’index avec la commande git add.
git diff [filename]
ex :
$ git diff longueur.sh
diff --git a/longueur.sh b/longueur.sh
index 20194fe..20415af 100644
--- a/longueur.sh
+++ b/longueur.sh
@@ -2,7 +2,9 @@
import sys
-def taille(s) : return 1 + taille(s[1:]) if s else 0
+def taille(s) :
+ if not s : return 0
+ return 1 + taille(s[1:])
for x in sys.argv[1:] :
print(taille(x))
Pour appliquer un patch généré avec git format-patch, voir la commande git am filename.patch
.
Pour appliquer un patch généré avec git diff, voir la commande git apply filename.patch
(option --check pour simulation).
Afficher les modifications depuis le dernier commit :
git diff HEAD
Affiches les différences entre le staging area (modifications indexées en cache) et le dernier commit :
Ici les modifications ont été validées avec git add mais n’ont pas encore été commitées.
git diff --cached [filename]
Afficher les modifications entre deux commits :
git diff commit1(-) commit2(+) [filename]
ex :
$ git diff 159f756 089e7b1 longueur.sh
diff --git a/longueur.sh b/longueur.sh
index 20415af..9f87067 100644
--- a/longueur.sh
+++ b/longueur.sh
@@ -2,9 +2,7 @@
import sys
-def taille(s) :
- if not s : return 0
- return 1 + taille(s[1:])
+def taille(s) : return s and 1 + taille(s[1:]) or 0
for x in sys.argv[1:] :
print(taille(x))
Afficher les erreurs d’espaces sur les fichiers modifiés (modifications non indexées) :
git diff --check [filename]
ex :
$ git diff --check test.txt:1: trailing whitespace. +ajout d'une ligne de texte test.txt:2: trailing whitespace. + et d'une nouvelle test.txt:3: new blank line at EOF.
Retourner seulement des stats différentielles (insertions, délétions) :
git diff --stat
git diff --numstat
Afficher uniquement le nom des fichiers modifiés et le statut de la modification apportée :
git diff --name-status
Pour n’afficher que le nom des fichiers modifiés, utiliser l’option --name-only)
Les différents statuts possibles sont :
-
A: addition of a file
C: copy of a file into a new one
D: deletion of a file
M: modification of the contents or mode of a file
R: renaming of a file
T: change in the type of the file
U: file is unmerged (you must complete the merge before it can be committed)
X: « unknown » change type (most probably a bug, please report it)
On peut également afficher des différences avec positions relatives :
$ git diff HEAD HEAD~2
Ou entre deux branches :
$ git diff testing master
Ou entre une branche locale et une branche distante :
$ git fetch $ git diff master origin/master