¿Cómo encuentro una lista de archivos comprometidos con una rama de git?

3 minutos de lectura

avatar de usuario
iCodeLikeEstoyBorracho

¿Cómo enumero todos los archivos que envié a una rama específica? He enviado más de 40 archivos a una rama y necesito encontrar los nombres de los archivos porque estoy tratando de depurar algo, algo difícil de hacer cuando no recuerdo los nombres de los archivos.

git log solo me da una larga lista de confirmaciones pero no los archivos reales.

¿Has probado git ls-tree?

git ls-tree --name-only -r <branch_name> 

–name-only le da solo los nombres de los archivos. -r se repite en subdirectorios.

Si desea que aparezca el nombre del subdirectorio antes de recurrir a él, agregue -t a la lista de argumentos.

  • Maravillosa respuesta. La pregunta que respondió no es obvia de inmediato, y sé sobre git log.

    – pulpo agarrar

    07/04/2015 a las 18:36

  • obtuve una lista de toneladas de archivos en lugar de solo unos pocos de mi sucursal. git log --name-only parece la respuesta adecuada para ver archivos modificados por confirmaciones en la rama

    – Eugenio

    4 de julio de 2017 a las 16:46

  • @Eugene: Un voto negativo es un poco duro, ¿no crees?

    – Carlos

    5 de julio de 2017 a las 20:01

  • @Carl porque? Creo que la respuesta es incorrecta y la solución ofrecida no funciona. ¿Debería votarla? He votado la respuesta a continuación. este es el propósito de estas 2 flechas: delinear la mejor solución que sea apropiada para la mayoría de los usuarios.

    – Eugenio

    6 de julio de 2017 a las 6:42


  • git ls-tree --name-only $branch $directory/ para obtener una lista de un directorio específico

    – Hashbrown

    12 de septiembre de 2019 a las 10:19

avatar de usuario
KL-7

Si su rama se derivó de master puede usar este comando para enumerar todos los archivos nuevos que se agregaron después de la bifurcación:

git diff master...new-branch --name-status --diff-filter=A

Filtro disponible para --diff-filter son:

Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R)

  • Si espera obtener ayuda, debe proporcionar más información. ¿Obtienes una salida incorrecta? ¿Le da un error?

    – KL-7

    17 ago 2012 a las 13:00

  • Esto funcionó para mí. Creé una rama, hice algunas confirmaciones y estaba buscando solo los archivos modificados. La solución ls-tree me dio todos los archivos en mi pago inicial, no sé por qué, pero esto solo me dio los archivos modificados en la nueva rama. ¡¡Muchas gracias!!

    – corcho

    6 de septiembre de 2014 a las 4:25

git log --name-only trabajó para mi.

  • Esta fue la única respuesta que parece abordar realmente la pregunta. ¡Gracias!

    – SM Biggs

    3 sep 2015 a las 15:22

  • esta debería ser la respuesta aprobada

    – simpson

    11 de julio de 2021 a las 8:08

los git ls-files El comando enumera todos los archivos que existen en la última confirmación en la rama actual.

O bien, puede utilizar git diff --name-only para mostrar una lista de los archivos que son diferentes entre dos confirmaciones arbitrarias.

git log --name-status dará los nombres y el estado de los archivos modificados en cada confirmación

  • por nombre te refieres al nombre de la sucursal?

    – iCodeLikeImDrunk

    22 de enero de 2012 a las 21:13

  • respuesta perfecta, genial

    – Iyaz Ahmad

    01/09/2017 a las 21:45

avatar de usuario
newton singh

git log –solo nombre Trabajó para mi.

  • por nombre te refieres al nombre de la sucursal?

    – iCodeLikeImDrunk

    22 de enero de 2012 a las 21:13

  • respuesta perfecta, genial

    – Iyaz Ahmad

    01/09/2017 a las 21:45

avatar de usuario
fabien haddadi

Este puede ser útil, si desea conocer todos los archivos distintos que se modificaron desde la bifurcación:

git log –name-status desarrollar…branchname | grep -E “^[AMD]\s” | ordenar -u

Y esta variante enumerará el subconjunto de ellos que modificado:

git log –name-status desarrollar…branchname –author= | grep -E “^[AMD]\s” | ordenar -u

¿Ha sido útil esta solución?