Cómo hacer que el estado de git muestre solo archivos almacenados

86

Me gustaría obtener una lista de solo los nombres de archivo por etapas. No puedo encontrar la bandera equivalente --name-onlypara el git statuscomando. ¿Qué es una buena alternativa?

La lista de archivos se enviará a php -l(verificador de sintaxis PHP lint).

Solución: el comando completo

git diff --name-only --cached | xargs -l php -l
Ward Bekker
fuente
3
Si está ejecutando ese comando manualmente, parece que podría querer ponerlo en un enlace previo a la confirmación. kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog

Respuestas:

129

Use git diff --name-only(con --cachedpara obtener los archivos por etapas)

Ben Jackson
fuente
12

La respuesta aceptada no le permitirá saber qué tipo de cambios hubo.

Sí, si no es un verificador de sintaxis, sino una persona común con un repositorio lleno de archivos sin etapas y aún desea saber qué pasará con los archivos en etapas, hay otro comando:

git status --short | grep '^[MARCD]'

que conduce a algo como:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file

Obviamente, estos archivos se organizaron y después git commit:
deleted_filese eliminarán,
new_filese agregarán,
renamed_filese convertirán en archivos renamed_to.

Aquí hay una explicación de la salida de formato corto: https://git-scm.com/docs/git-status#_short_format

coffman21
fuente
1. en mi versión (2.25.0.windows.1) hay un espacio antes de "M" y "D". 2. También hay otro estado - "??" que no estoy seguro de cómo interpretar.
itsho
@itsho el espacio indica que no está escenificado. Esta respuesta es correcta porque coincide con el primer carácter de la línea. Si se establece el primer carácter, entonces es un archivo por etapas. Si es un espacio, se ignora.
Avner
1
¡Esto es genial! - debería haber una bandera git para algo similar
Norfeldt
3

Inspirado por la respuesta de @ coffman21 , configuré el siguiente alias en mi.zshrc

alias gst="git status"
alias gst-staged="git status --short | grep '^\w'"
alias gst-unstaged="git status  --short | grep '^\W'"
alias gst-unstaged-tracked="git status  --short | grep '^\s'"
alias gst-untracked="git status --short | grep '^??'"

Podría ser de utilidad para cualquier otra persona. Así que lo agregamos a la pila de respuestas.

Norfeldt
fuente
para la coloración en masa se puede añadir un .grep, para dar color a ambos 2 caracteres iniciales, como: grep '^\w.', grep '^\W.',grep '^\s.'
geekley
0

para ver archivos preparados con cambios de código

git diff --staged   

o usando --cached que es sinónimo de --staged

git diff --cached

o para ver solo nombres de archivos sin cambios de código

git diff --staged --name-only  

manual de git-diff

velocidad
fuente