2010-09-10 10 views

Répondre

98
  1. git diff HEAD - montre ce qui a changé depuis la dernière validation.
  2. git diff HEAD^ - Affiche ce qui a changé depuis la validation avant la dernière validation.
  3. git diff --cached - Afficher ce qui a été ajouté à l'index via git add mais pas encore validé.
  4. 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^ <--------------------+ 
+0

@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

+0

@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

+14

+1 pour l'ascii-art seul. Une image = 1000 mots; Un ascii-art = 1025 caractères. –

0

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.

+2

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

9
  1. git diff HEAD: Diff entre HEAD et le répertoire de travail.
  2. 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.
  3. git diff: Diff entre l'index et le répertoire de travail.
+4

Est-ce que quelqu'un a un bon moyen de s'en souvenir? Je reviens toujours ici. –

+1

@kevin C'est mieux que de faire du sudoku non? – Samuel

9

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".

4

est ici un moyen simple de se rappeler ces commandes:

  • Par défaut, la source de 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.
  • Cela ne change pas nécessairement la cible une fois que vous avez ajouté d'autres arguments. Mais par commodité, la cible devient la dernière validation si aucune n'est fournie.
  • L'ajout d'une validation en tant qu'argument modifie la cible.
  • L'ajout de deux validations en tant qu'arguments modifie respectivement la source et la cible .

Amusez-vous les mélanger à votre goût :)