2010-07-01 7 views
36

Estoy tratando de averiguar cómo contar fácilmente los archivos en mi índice no comprometido.archivos de conteo de git en el índice por etapas

He intentado:

git status | grep '#' | wc -l 

pero hay algunas líneas que comienzan con # que no representan los archivos modificados. Alguien tiene algo mejor? Imaginé que tenía que haber una bandera para git status para hacer esto.

Incluso herramientas como GitX no le permiten seleccionar fácilmente los archivos/directorios por etapas y ver cuántos de ellos hay.

Respuesta

43

Si quieres algo un script puede utilizar:

git diff --cached --numstat | wc -l

Si quieres algo legible:

git diff --cached --stat

+0

¿Por qué el indicador --cached? –

+3

@Humdinger La pregunta era acerca de los archivos no comprometidos en el índice, que es lo que muestra '-cached'. Sin '-cached', mostraría los archivos que están cambiados en el directorio de trabajo pero no en el índice (es decir, archivos no registrados). – mkarasek

5

git status Try -s:

git status -s | egrep "^M" | wc -l 

M directamente después del inicio de la línea (^) indica un archivo de puesta en escena. "^ M" sería un archivo sin registrar pero cambiado.

+0

Gracias, que devuelve 0, pero 'git status -s | egrep "^ M" | wc -l' funcionó. Creo que el espacio debe estar al otro lado de la "M" en la expresión regular. – Bradley

+0

Ah e incluir otros tipos de cambios (agregados, renombrados, creados, eliminados): 'git status -s | egrep -c "^ [MARCD]" ' – Bradley

+0

No entiendo por qué esta respuesta tiene tan pocos votos. Este es más fácilmente adaptable para informar todos los estados posibles. – Michael

13

Esto funcionó para mí:

git status | grep 'modified:' | wc -l

devuelve un número

+1

Y ese número es "1" – Guillochon

+0

esto no funciona con los archivos recién agregados. – pepero

2

Por lo que vale la pena, prefiero:

git diff --stat | tail -n1 

Salidas algo como:

10 files changed, 74 insertions(+), 123 deletions(-) 
Cuestiones relacionadas