Parfois, lorsque je suis sur le point de faire un commit, je ne me souviens pas exactement de ce qui a changé depuis le dernier commit. Comment puis-je voir un diff de l'état actuel du code et du dernier commit?
Parfois, lorsque je suis sur le point de faire un commit, je ne me souviens pas exactement de ce qui a changé depuis le dernier commit. Comment puis-je voir un diff de l'état actuel du code et du dernier commit?
Réponses:
Si vous n'avez pas encore ajouté de fichiers à l'index (avec git add
), faites simplement
git diff
Cela montrera la différence entre votre arbre de travail et votre index.
Si vous avez ajouté des fichiers à l'index, vous devez le faire pour afficher les différences entre l'index et le dernier commit (HEAD).
git diff --cached
Enfin, si vous voulez voir les modifications apportées dans l'arborescence de travail par rapport au dernier commit ( HEAD
), vous pouvez (comme le souligne Carlos)
git diff HEAD
Ces changements sont la combinaison de git diff
et git diff --cached
.
git diff
l'état de l'index et le commit précédent dans un message diff?
git diff --cached HEAD^
:)
Si vous venez de faire un commit, ou si vous voulez voir ce qui a changé dans le dernier commit par rapport à l'état actuel (en supposant que vous ayez un arbre de travail propre), vous pouvez utiliser:
git diff HEAD^
Cela comparera le HEAD avec le commit juste avant. On pourrait aussi faire
git diff HEAD^^
pour comparer à l'état de jeu 2 commits auparavant. Pour voir la différence entre l'état actuel et un certain commit, faites simplement:
git diff b6af6qc
Où b6af6qc
est un exemple de hachage de validation.
HEAD^
est le commit avant le dernier commit.
Vous demandez à git de différencier le commit actuel / dernier, qui a un raccourci de HEAD
.
Nous git diff HEAD
allons donc comparer l'état actuel de l'arbre de travail avec le commit actuel.
cela montre également la différence et quels fichiers ont été changés / modifiés.
$ git status
Affiche les chemins qui ont des différences entre le fichier d'index et le commit HEAD actuel, les chemins qui ont des différences entre l'arborescence de travail et le fichier d'index, et les chemins dans l'arbre de travail qui ne sont pas suivis par git (et ne sont pas ignorés par gitignore (5) ). Le premier est ce que vous commettriez en exécutant git commit; les deuxième et troisième sont ce que vous pouvez valider en exécutant git add avant d'exécuter git commit.
https://www.kernel.org/pub/software/scm/git/docs/git-status.html
Cela fonctionne aussi pour moi:
# The last one
git diff HEAD~1 HEAD
# The last but one, etc...
git diff HEAD~2 HEAD~1
Cela fonctionne généralement pour une histoire linéaire. Cela pourrait devenir plus délicat s'il existe également des validations de fusion. Je vous recommande de regarder dans ce document pour une explication agréable et complète, en particulier cet exemple d'illustration d'arbre de validation:
git diff
compare l'arbre de travail à l'index, pas à HEAD.