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

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)


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


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.