2011-07-05 10 views
19

Estoy trabajando en un repositorio git que contiene una gran cantidad de archivos cambiados b/w uno se compromete con otro, cómo extraer el número de cambios de archivos b/w comete.Cómo encontrar el número de archivos cambiados de una confirmación a otra en git

+0

Tal 'whatchanged' git? –

+1

@Kerrek SB Parece una buena respuesta. ¿Por qué lo pones en un comentario y no como una respuesta? Lo siento, a veces simplemente no lo entiendo. – SteeveDroz

+0

@Oltarus: OK, hecho :-) No parecía lo suficientemente grande como para justificar una respuesta, y no estoy seguro si realmente satisface las necesidades. Sin embargo, después de consultar algunos documentos, parece que sí. –

Respuesta

34

La herramienta git whatchanged muestra un resumen de los archivos que se han modificado. Por sí mismo enumera todas las confirmaciones, pero también se puede limitar a sólo la reciente n se compromete:

git whatchanged -1 

Contar archivos:

git whatchanged -1 --format=oneline | wc -l 

Ver git help whatchanged para details.

+5

tenga en cuenta que esto siempre contará los archivos más uno, porque el '--format = oneline' incluye commit-hash/header. – c00kiemon5ter

+0

@Cook: Sí, buen punto. –

+1

'git whatchanged -1 --format = oneline | cola -n +2 | wc -l' –

1

uso esto:

git log --oneline --name-status <HASH> -1 

por ejemplo:

$ git log --oneline --name-status bb3ae49 -1 
M  .vim/spell/en.utf-8.add 
M  .vim/spell/en.utf-8.add.spl 

funciona igual que el

git whatchanged --oneline --name-status <HASH> -1 
+0

Esta debería ser la respuesta aceptada, ya que se desaconseja usar 'git whatchanged'. –

11

Además de los métodos mencionados anteriormente que puede hacer esto también:

git diff HEAD^..HEAD --name-only - dará la lista de ficheros cambiados entre HEAD y uno de revisión antes de cabeza (HEAD^). Puede reemplazar HEAD^ con un SHA1 del "de" comprometerse y HEAD con el SHA1 de la "a" comprometerse:

git diff <SHA1-of-from-commit>..<SHA1-of-to-commit> --name-only

Así que si canalizar la salida a wc -l que debe darle el número de archivos cambiado entre commits.

+0

Mucho más útil para poder contar archivos entre confirmaciones arbitrarias, no solo los archivos cambiados en una única confirmación. Tenga en cuenta que también funciona con nombres y etiquetas de ramas (y, por supuesto, otras combinaciones de atajos, además de HEAD y HEAD ^) –

7
git show --stat 

Esto da la lista de ficheros cambiados de esta manera:

1 archivo cambiado, 1 de inserción (+), 1 eliminación (-)

Opcionalmente se puede añadir el código de cometer si no No quiero obtener la información de la última.

git show --stat {commit code without brackets} 
1

en Windows:

git whatchanged -1 --format=oneline | find /v /c "" 

La pieza específica de Windows importante es que debe reemplazar el comando wc utilizado en otras soluciones con esto:

| find /v /c "" 
Cuestiones relacionadas