2010-09-10 11 views

Respuesta

98
  1. git diff HEAD - Muestra lo que ha cambiado desde la última confirmación.
  2. git diff HEAD^ - Muestra qué ha cambiado desde la confirmación antes de la última confirmación.
  3. git diff --cached - Mostrar lo que se ha agregado al índice a través de git add pero aún no confirmado.
  4. git diff - Mostrar lo que ha cambiado pero aún no se ha agregado al índice a través de git add.

Parece que este:

 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á dibujado a mano o usaste alguna herramienta de arte ASCII? ¿Hay algún comando git para esto también? ;) – takeshin

+0

@takeshin: Dibujado a mano; no es tan dificil. (Pero hay un modo emacs para dibujar ascii art, no es que lo use). – Amber

+14

+1 solo para el ascii-art. Una imagen = 1000 palabras; Una ascii-art = 1025 caracteres. –

0

HEAD es la corriente HEAD puntero en el árbol, HEAD^ es el commit antes HEAD. --cached No estoy seguro. --cached le mostrará los cambios que haya realizado pero que no haya agregado al índice.

El git tutorial en kernal.org es una muy buena lectura.

+2

Tienes '--cached' un poco mal: se nota que sólo los cambios que haya * * Se ha añadido al índice (pero no ha cometido) – Amber

9
  1. git diff HEAD: Diff between HEAD y el directorio de trabajo.
  2. git diff HEAD^: Diferencia entre el antecesor directo de HEAD y el directorio de trabajo.
  3. git diff --cached o el sinónimo git diff --staged: Diferencia entre HEAD y el índice.
  4. git diff: Diferencia entre el índice y el directorio de trabajo.
+4

¿Alguien tiene una buena manera de recordar esto? Sigo volviendo aquí. –

+1

@kevin Es mejor que hacer sudoku ¿verdad? – Samuel

9

Desde el Git Community Book:

git diff

le mostrará los cambios en el directorio de trabajo que aún no se clasifican para la siguiente compromiso

git diff --cached

le mostrará la diferencia entre el índice y su última confirmación; lo que comprometería si ejecuta "git commit" sin la opción "-a".

git diff HEAD

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

4

Aquí está una manera fácil de recordar estos comandos:

  • Por defecto, se asume fuente git diff 's para ser el directorio de trabajo, y su objetivo es el índice.
  • Agregar el indicador --cached cambia la fuente para que sea el índice. No necesariamente cambia el objetivo una vez que agregas más argumentos. Pero, por comodidad, el objetivo se convierte en el último compromiso si no se proporciona ninguno.
  • Agregar un compromiso como argumento cambia el objetivo.
  • Al agregar dos confirmaciones como argumentos, se modifican tanto el origen como el destino , respectivamente.

Diviértete mezclarlos a su gusto :)

Cuestiones relacionadas