Quelles sont les différences entre les commandes git suivantes?Quelles sont les différences entre ces commandes git diff?
git diff HEAD
git diff HEAD^
git diff --cached
ou le synonymegit diff --staged
git diff
Quelles sont les différences entre les commandes git suivantes?Quelles sont les différences entre ces commandes git diff?
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 la dernière validation.git diff HEAD^
- Affiche ce qui a changé depuis la validation avant la dernière validation.git diff --cached
- Afficher ce qui a été ajouté à l'index via git add
mais pas encore validé.git diff
- Afficher ce qui a changé mais n'a pas encore été ajouté à l'index via git add
.Il 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^ <--------------------+
HEAD
est le pointeur HEAD
courant dans l'arbre, HEAD^
est le commettras avant HEAD
.
--cached
Je ne suis pas sûr de.
--cached
vous montrera toutes les modifications que vous avez apportées mais qui n'ont pas été ajoutées à l'index. Le git tutorial sur kernal.org est une très bonne lecture.
Vous avez '--cached' un peu mal: il vous montre que les modifications que vous avez * * ajoutés à l'index (mais n'ont pas commis). – Amber
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. Ou le synonyme git diff --staged
: Diff entre HEAD et l'index.git diff
: Diff entre l'index et le répertoire de travail.Est-ce que quelqu'un a un bon moyen de s'en souvenir? Je reviens toujours ici. –
@kevin C'est mieux que de faire du sudoku non? – Samuel
De l'Git Community Book:
git diff
vous montrera des changements dans le répertoire de travail qui ne sont pas encore mis en scène pour la prochain commit.
git diff --cached
vous montrer la différence entre l'index et votre dernier commit; ce que vous commettriez si vous lancez "git commit" sans l'option "-a".
git diff HEAD
montre des changements dans le répertoire de travail depuis votre dernière validation; ce que vous commettriez si vous lancez "git commit -a".
est ici un moyen simple de se rappeler ces commandes:
git diff
est supposé être le répertoire de travail, et son objectif est l'indice. L'ajout de l'indicateur --cached
modifie la source pour être l'index.Amusez-vous les mélanger à votre goût :)
@Picasso Est-il dessiné à la main ou avez-vous utilisé un outil d'art ASCII? Y a-t-il une commande git pour ça aussi? ;) – takeshin
@takeshin: dessinés à la main; ce n'est pas si dur. (Mais il y a un mode emacs pour dessiner l'art ascii, pas que je l'utilise.) – Amber
+1 pour l'ascii-art seul. Une image = 1000 mots; Un ascii-art = 1025 caractères. –