2010-07-20 6 views

Répondre

81

De "Specifying revisions"

HEAD noms du COMMIT lesquels vous avez fondé les changements dans l'arborescence de travail.

Il existe d'autres têtes (FETCH_HEAD, ORIG_HEAD et MERGE_HEAD). Voir Jefromi's answer pour plus.

La chose est, par défaut git diff montre effectivement les différences entre « l'état actuel de votre projet » (à savoir vos fichiers sur votre arbre de travail) et l'indice (non HEAD).
En d'autres termes, les différences sont pourrait dire à git d'ajouter plus à l'index, mais vous ne l'avez pas encore.

si vous git diff --cached, alors il compare l'indice avec la tête.

Voir git book for more (archive link):

Une utilisation courante consiste à exécuter simplement

$ git diff 

qui vous montrera les changements dans le répertoire de travail qui ne sont pas encore mis en scène pour la prochaine validation. Si vous voulez voir ce qui est mis en scène pour la prochaine commettras, vous pouvez exécuter

$ git diff --cached 

qui vous montrera la différence entre l'index et votre dernier commit; ce que vous commettriez si vous lancez "git commit" sans l'option "-a". (Dans les versions Git 1.6.1 et versions ultérieures, vous pouvez également utiliser git diff --staged qui peut être plus facile à retenir.) Enfin, vous pouvez exécuter

$ git diff HEAD 

qui montre les changements dans le répertoire de travail depuis votre dernière validation; ce que vous commettriez si vous lancez "git commit -a".

Voir aussi 365git: Getting a diff between the working tree and other commits:

http://images.abizern.org.s3.amazonaws.com/365git/Feb11/Git%20Diff%202.png

+2

lien impressionnant, dans les 3 années d'utilisation git je n'ai pas vu une seule image qui explique si bien les choses. Les images officielles git sont horribles par rapport à la simplicité fournie par l'image liée. Toutes les autres images sur le blog semblent être comparables. Je veux dire que les images git officielles sont plutôt des séries d'images qui laissent encore place à l'interprétation, alors que l'image dans votre message explique 5 commandes différentes en seulement 1 image. C'est tout à fait l'inversion de l'efficacité, 5 images par commande comparées à 5 commandes par image. – HopefullyHelpful

2

git diff est pour montrer les changements non engagés (à savoir le travail que vous avez fait, mais pas encore engagé dans le projet en cours).

Voici une explication complète: http://git-scm.com/docs/git-diff

+0

Pas exactement. La réponse de VonC est plus précise; 'git diff' ne montre * pas * les modifications que vous avez faites, pas encore validées dans le projet, mais * have * ajouté avec un' git add'. –

Questions connexes