2011-08-02 28 views
12

Apoyo si esto no es muy claro, pero en Git, ¿hay alguna manera de ver todos los archivos modificados en una rama, solo por nombre? Por lo que sé, puedo usar git log para ver los archivos que han cambiado en una única confirmación, pero quiero ver todos los archivos que han cambiado desde que se creó la rama, durante varias confirmaciones.¿Hay alguna manera de ver todos los archivos modificados en una rama en Git?

Hay git diff pero esto también enumera los archivos modificados en la rama que estoy comparando con los que no quiero ver. De alguna manera quiero un comando que diga 'mostrar los nombres de archivo para todos los archivos modificados en esta rama'.

Muchas gracias

Respuesta

34

Suponiendo que estés en la rama foo, y que está interesado en los archivos que han cambiado desde el momento en que se separaron de master, sólo puede hacer:

git diff --name-only master... 

(. Tenga en cuenta los tres puntos) Si no está foo, puede utilizar la forma completa:

git diff --name-only master...foo 

he hecho algunos gráficos que explican las anotaciones de doble punto y de punto triple, y sus diferencias entre su significado en git rev-list y git log - se puede encontrar en this answer.

+0

Eso es genial, gracias hombre. Voy a echar un vistazo a las notaciones de puntos triples, ya que claramente funciona. Solo lo probé. Sangriento genial. Gracias de nuevo. – screenm0nkey

+0

También vale la pena señalar que si invierte los nombres de las ramas de la orden en el último argumento, puede verificar los cambios en la rama original (ideal para dar una indicación de los cambios antes de la fusión) – stephenfin

1

no saben que hay algo que hace exactamente lo que quiere basándose únicamente en su rama actual, pero si se conoce el ID comprometerse que es el padre de su rama, que puede hacer:

git diff --name-only <commit id of branch point>..HEAD 
+0

que es una buena idea y que yo pensaba, pero no sé cómo averiguar qué compromiso comparar con en el maestro cuando creé la rama. ¿Eso tenía sentido? – screenm0nkey

+0

Puede usar la notación de puntos triples (por ejemplo, 'git diff A ... B') para comparar la base de fusión de' A' y 'B' (que en la mayoría de los casos será el punto de bifurcación que está hablando de) y 'B'. He agregado un poco más sobre eso en mi respuesta. –

0

Suponiendo que haya extraído la rama que se está trabajando, y que desea compararlo con maestría:

git diff --name-only master 
+0

Eso hace una diferencia entre la punta del maestro y HEAD - el OP está preguntando sobre los archivos que acaban de cambiar en la rama del tema. –

+0

ah buen punto @Mark. Eché de menos ese detalle en la pregunta. – nocache

0

estoy usando este comando para averiguar la lista de archivos N cambiado entre dos versiones, aquí N es 50

git log --pretty=format: --name-only <SourceBranch>...<TargetBranch> | sort | uniq -c | sort -rg | head -50 
Cuestiones relacionadas