2011-01-19 16 views
31

Si me quedo 'git status' en mi repo Da:git: ¿Por qué no se muestran las diferencias?

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: myfile 

Sin embargo, si hago un 'git diff mi_archivo' se nota ninguna diferencia. ¿Esto es porque hice un cambio y lo eliminé para que vuelva al original?

¿Debo ejecutar 'git checkout myfile' para eliminarlo?

Respuesta

49

Su archivo ya está configurado para comprometerse. Puede mostrar su diferencia usando la opción --cached de git.

git diff --cached myfile 

Para unstage, simplemente hacer lo que git status sugiere en su salida;)

Puede comprobar The Git Index Para obtener más información.

+1

Esto funcionó para mí, pero solo después de ejecutar "git add" en primer lugar. Gracias. –

5

Tengo una preferencia para el alias --staged, sobre todo porque me parece que --staged en realidad significa lo que quiero hacer, es decir, muéstrame las diferencias por etapas.

git diff --staged 

La respuesta aceptada es correcta y no tengo ningún reparo con ella. Personalmente creo que --cached se siente como que git diff está almacenando en la memoria caché la respuesta y mostrándome resultados precalculados o algo así.

También me gusta git diff HEAD porque es un más general. Se reúne dos conceptos que la mayoría de la gente sabe, es decir:

  1. git diff <commit> le permite ver la diferencia entre su posición actual y una confirmación anterior.

  2. HEAD (o head porque mantener el turno es molesto) es una referencia a la punta de su rama. (Para aquellos de ustedes que son las pulsaciones de teclado de conteo, @ es un alias para HEAD.)

Combinados, estos dos conceptos de utilidad general como resultado:

git diff head 
git diff @ 
0

Por área de ensayo vs comparación Repositorio utilizar

$git diff --staged 

para trabajar vs comparación Repositorio utilizar

$ git diff 

pero si un archivo se cambia y se agrega al área de ensayo ($ git add fileName) y tratamos de ver la diferencia con ($ git diff). No devolverá ninguna diferencia ya que el archivo está en el área de ensayo y no se comparará con el repositorio.

Cuestiones relacionadas