Quelles sont les différences entre les commandes git suivantes?
git diff HEAD
git diff HEAD^
git diff --cached
ou le synonyme git diff --staged
git diff
git diff HEAD
– Montre ce qui a changé depuis le dernier commit. git diff HEAD^
– Affiche ce qui a changé depuis la validation avant la dernière validation. git diff --cached
– Affiche ce qui a été ajouté à l’index via git add
mais pas encore validé. git diff
– Affiche ce qui a changé mais n’a pas encore été ajouté à l’index via git add
. Cela ressemble à ceci:
Working Directory <----+--------+------+ | | | | | | | | V | | | "git add" | | | | diff | | | | | | V | | | Index <----+ diff HEAD | | | | | | | | | V | | | "git commit" | | | | diff --cached | | | diff --staged | | V | | | HEAD <----+--------+ | | | | diff HEAD^ V | previous "git commit" | | | | | V | HEAD^ <--------------------+
Du livre de la communauté Git :
git diff
affichera les modifications du répertoire de travail qui ne sont pas encore organisées pour le prochain commit.
git diff --cached
vous montrera la différence entre l’index et votre dernier commit; ce que vous commettez si vous lancez “git commit” sans l’option “-a”.
git diff HEAD
affiche les modifications dans le répertoire de travail depuis votre dernier commit; ce que vous commettez si vous lancez “git commit -a”.
git diff HEAD
: Diff entre HEAD et le répertoire de travail. git diff HEAD^
: Diff entre l’ancêtre direct de HEAD et le répertoire de travail. git diff --cached
ou le synonyme git diff --staged
: Diff entre HEAD et l’index. git diff
: Diff entre l’index et le répertoire de travail. Voici un moyen simple de mémoriser ces commandes:
git diff
est supposée être le répertoire de travail et sa cible est l’index. --cached
modifie la source en tant qu’index. Cela ne change pas nécessairement la cible une fois que vous ajoutez plus d’arguments. Mais pour plus de commodité, la cible devient la dernière validation si aucune n’est fournie. Amusez-vous à les mélanger à votre guise 🙂
HEAD
est le pointeur HEAD
actuel dans l’arborescence, HEAD^
est le commit avant HEAD
. --cached
Je ne suis pas sûr--cached
vous montrera toutes les modifications que vous avez apscopes mais que vous n’avez pas ajoutées à l’index.
Le tutoriel git sur kernal.org est une très bonne lecture.