¿Cuál es una forma fácil de detectar files modificados en un espacio de trabajo de Git?

Durante make, creo campos de cadena que incrusté en el resultado vinculado. Muy útil.

Aparte de un análisis complejo de sed / grep del command de git status , ¿cómo puedo determinar fácilmente si los files en el espacio de trabajo se han modificado de acuerdo con git ?

git ls-files -m

Para encontrar esto, podrías haber navegado a través de la git help -a .

Si solo quieres un simple "¿Hay alguna diferencia con HEAD?":

 git diff-index --quiet HEAD 

Si el código de salida es 0, entonces no hubo diferencias.

Si desea "¿Qué files han cambiado desde HEAD?":

 git diff-index --name-only HEAD 

Si desea "¿Qué files han cambiado desde HEAD y de qué manera han cambiado (agregados, eliminados, cambiados)?":

 git diff-index --name-status HEAD 

Agregue -M (y -C ) si desea cambiar el nombre (y copyr) la detección.

Estos commands verificarán tanto el contenido en etapas (lo que está en el índice) como los files en el tree de trabajo. Alternativas como git ls-files -m solo verificará el tree de trabajo contra el índice (es decir, ignorará cualquier contenido por etapas (pero no confirmado) que también esté en el tree de trabajo).

git status --porcelain parece dar una buena salida analizable.

git diff --name-only hace lo mismo (podría ser más intuitivo …)