2010-07-20 11 views

Respuesta

81

De "Specifying revisions"

HEAD nombres de la confirmación en el que se basan los cambios en el directorio de trabajo.

Hay otras cabezas (FETCH_HEAD, ORIG_HEAD y MERGE_HEAD). Ver Jefromi's answer para más.

La cosa es, por defecto git diff realidad muestra las diferencias entre "el estado actual de su proyecto" (es decir, los archivos en el directorio de trabajo) y el índice (no la cabeza).
En otras palabras, las diferencias son lo que podría decirle a git para seguir agregando al índice, pero aún no lo ha hecho.

si lo hace git diff --cached, continuación se comparará con el índice CABEZA.

Ver git book for more (archive link):

Un uso común es que sólo tiene que ejecutar

$ git diff 

que le mostrará los cambios en el directorio de trabajo que aún no se clasifican para la próxima confirmación. Si quieres ver lo que se pone en escena para la próxima confirmación, puede ejecutar

$ git diff --cached 

que se mostrará la diferencia entre el índice y su última confirmación; lo que comprometería si ejecuta "git commit" sin la opción "-a". (En las versiones Git 1.6.1 y más tarde, también se puede utilizar git diff --staged que puede ser más fácil de recordar.) Por último, se puede ejecutar

$ git diff HEAD 

que muestra los cambios en el directorio de trabajo desde el último commit; lo que estarías cometiendo si ejecutaras "git commit -a".

Ver también 365git: Getting a diff between the working tree and other commits:

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

No
+2

enlace increíble, en los 3 años de usar git no he visto una sola imagen que explicara las cosas tan bien. Las imágenes git oficiales son horribles en comparación con la simplicidad proporcionada por la imagen vinculada. Todas las otras imágenes en el blog parecen ser comparativamente asombrosas. Quiero decir que las imágenes git oficiales son más bien series de imágenes que aún dejan espacio para la interpretación, mientras que la imagen en tu publicación explica 5 comandos diferentes en solo 1 imagen. Esto es bastante la inversión de la eficiencia, 5 imágenes por comando en comparación 5 comandos por imagen. – HopefullyHelpful

2

git diff es para mostrar los cambios no confirmados (es decir, el trabajo que ha hecho, pero aún no han comprometido con el proyecto actual).

He aquí una explicación completa: http://git-scm.com/docs/git-diff

+0

exactamente. La respuesta de VonC es más precisa; 'git diff' does * not * muestra los cambios que ha realizado, que aún no se han comprometido con el proyecto, pero * se han añadido * con un' git add'. –

Cuestiones relacionadas