Quelle est la différence entre git diff HEAD
y git diff --staged
? J'ai essayé les deux mais les deux donnent le même résultat.
Réponses
Trop de publicités?Supposons que cette sortie pour git status
:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: y
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: x
#
Comme vous le voyez, un fichier a été modifié mais n'est pas prêt à être livré, et un nouveau fichier a été ajouté et est prêt à être livré.
git diff --staged
ne montrera que les changements apportés aux fichiers dans la zone "staged".
git diff HEAD
montrera toutes les modifications apportées aux fichiers suivis. Si vous avez tous les changements mis en scène pour la livraison, alors les deux commandes auront le même résultat.
-
git diff
Voir la différence entre Stage et Working Directory -
git diff --staged
Voir la différence entre HEAD et Stage -
git diff HEAD
Voir la différence entre HEAD et Working Directory
-
HEAD
est une référence au dernier commit de la branche actuellement extraite. - La zone de transit, la scène et l'index ont tous la même signification.
- Les changements non structurés existent dans notre Répertoire de travail mais Git ne les a pas encore enregistrés dans son historique de versions.
- Les changements staged ressemblent beaucoup aux changements unstaged, sauf qu'ils ont été marqués pour être livrés la prochaine fois que vous exécuterez git commit.
Vous pourrez voir plus facilement la différence entre les deux différences avec la prochaine version (Git 2.3.4+, Q2 2015). git status -v -v
Véase commettre 4055500 de Michael J Gruber mjg
il explique bien la différence entre git diff HEAD
y git diff --staged
:
commit
/status
: afficher la différence entre l'arbre de travail et l'index avec-v -v
git commit
ygit status
en format long, montrer la différence entre HEAD et l'index lorsqu'il est donné-v
. Cela permet prévisualisation d'un commit à faire .Ils listent également les fichiers suivis avec des changements non indexés, mais sans diff.
Introduire '
-v -v
qui montre la différence entre l'index et l'arbre de travail. arbre de travail en outre auHEAD
indice diff. Cela permet à un examen des changements non indexés qui pourraient être manquants dans la livraison. .Dans le cas de '
-v -v
', lignes d'en-tête supplémentaires
Changes to be committed:
# and
Changes not staged for commit:
sont insérés avant les diffs, qui sont égaux à ceux de la partie statut ; ces derniers sont précédés de 50*".
-
"pour le faire ressortir davantage.
Vous pouvez également obtenir des résultats différents des deux commandes diff si vous les exécutez sur une fusion non réussie, c'est-à-dire sur des chemins non fusionnés.
Je n'ai pas réussi à trouver la raison pour laquelle il se comporte ainsi, mais vous pouvez en lire plus à ce sujet aquí