2011-05-18 12 views
34

Soy bastante nuevo en Git, por lo que tal vez me falta algo aquí.Git - algunos archivos están marcados como cambiados, pero 'git diff' no muestra nada

[email protected]:/var/www/$ git status -s 
M GoogleChromeExtension.js 
M ApiClient.js 

Así que claramente 2 archivos han sido cambiados.
Pero cuando corro: se muestra

git diff 

sin salida. Esperaba obtener los cambios entre mi copia de trabajo y la última confirmación.

estoy seguro de ayer todo estaba trabajando como esperando ...

¿Es tal vez porque no he estado empujando los cambios al servidor remoto?

P.S .: Estoy usando GitHub

Gracias,
Dan

+2

Agregue el resultado de "estado de git" sin el "-s" – jcollie

Respuesta

49

Haz un git diff --cached - compara el CABEZAL y el índice, es decir, cosas añadidas para el compromiso.

Sólo un git diff es entre el índice y el directorio de trabajo, por lo que si todos los cambios que se han efectuado para cometer, que ganó' ver nada en git diff

La tercera forma es git diff <commit> el que se comparaban directorio de trabajo y comprometerse. Por lo tanto, al hacer git diff HEAD, también obtendrá la diferencia que desee.

+4

Además, observe que desde la salida de git-status puede observar que las modificaciones del archivo están en el índice porque la 'M' aparece en el primer columna. Si los cambios no se hubieran realizado, la 'M' estaría en la segunda columna. –

+0

@William Pursell - buen punto. Además, si la salida de color está habilitada, la primera tiene un color verde M y la segunda un rojo. Al menos, ese es el caso para mí en git bash en Windows.Por lo tanto, no es exactamente necesario tener 'git status' pero' git status -s' también puede ser bastante informativo si sabes dónde buscar. – manojlds

+1

'estado de git -s' está destinado principalmente para el consumo de la máquina; las computadoras son generalmente mejores que nosotros al notar en qué columna se encuentra la M (y somos mejores para leer los colores). – Cascabel

3

Dependiendo de exactamente lo que está pasando, puede haber dos soluciones a este. Sería mejor si no usaras el modo corto ya que oculta información importante para depurar esto.

Si espera cambios, intente ejecutar git diff HEAD para comparar el directorio de trabajo con la última confirmación. Si ya ha publicado git add los cambios, la acción predeterminada de git diff será no mostrar esas diferencias. Consulte la página del manual http://git-scm.com/docs/git-diff DESCRIPCIÓN que habla de esto. La salida git status (sin -s) ayudaría a todos a ver si este era el caso.

Como alternativa, si no esperaba cambios, podría tratarse de un problema de sistema operativo/sistema de archivos. Informe su sistema operativo y la información del sistema de archivos.

1

Asegúrate de que no estás realmente en otro repositorio de git. Y si por alguna razón anterior comandos falla, intenta ejecutar:

git show HEAD 
0

recientemente he tenido este problema, y ​​se encontró que sucedió porque he cambiado de archivo .gitattributes para el repositorio. ¿Ha cambiado alguno de sus archivos .gitattributes recientemente? ¿Todos los archivos que se cambian son del mismo tipo? Mis problemas recientes afectaron a los archivos * .sql, por ejemplo. Cuando deshice el cambio a .gitattributes, los archivos fuente se volvieron a cambiar.

Cuestiones relacionadas