¿Cómo enumerar los archivos modificados por git pull / git merge?

5

En uno de nuestros proyectos, MysQL-Dumps se sincronizan con git. Un archivo para cada tabla en la base de datos. Después de extraer / fusionar, los volcados se importan a la base de datos local con un gancho. El problema ahora es que necesito encontrar todos los volcados de tabla que se modificaron con la extracción para importar solo estos. ¿Cómo puedo saber el enlace posterior a la fusión para saber qué archivos han cambiado? Posiblemente no sea solo una confirmación antes de que se fusione, por lo general, hay más confirmaciones.

¿Cómo puedo obtener una lista de archivos modificados?

WolleTD
fuente

Respuestas:

5

git diff --name-only SHA1 SHA2

Se usa git logpara obtener git commit ids. Úselo solo git diff SHAxsi solo desea diff contra la última cabeza que ha extraído.

Antes de git pullhacerlo git logo git statuspara obtener el SHAx. Puede hacerlo en git fetchlugar de extraer y hacer log y diff antes de fusionar.

Chris
fuente
2
Sí, SHA1 es mi CABEZA, pero ¿cómo obtengo el SHA2 correcto?
WolleTD
2
Probablemente pueda explicar su respuesta y articularla con una descripción de lo que está proponiendo.
Sekhemty
Esto realmente no ayuda cuando no obtuviste el commit sha antes de tirar
Neil Neyman
3

La forma más fácil que encontré es

git diff --name-only HEAD@{0} HEAD@{1}

desde HEAD@{n}significa el enésimo valor anterior deHEAD

Carlos Heuberger
fuente
2

Solía git reflogjusto después git pullde conseguir algo como:

SHA1 HEAD@{0}: pull: Fast-forward
SHA2 HEAD@{1}: checkout: moving from somewhere to anotherplace

el SHA justo después de la lectura "pull: Fast-forward" es donde estabas antes del pull.

Después de eso, utilicé el git diff --name-only SHA2de la otra respuesta, que le dará una lista de archivos que se cambiaron de ese compromiso a su estado actual.

No estoy 100% seguro de cómo funciona esto para los tirones con muchos cambios y fusiones, pero para un avance rápido simple funcionó muy bien.

jcvalverde
fuente
en realidad HEAD@{0}(o el que dice "pull: Fast-Forward") es el commit real, después del pull, ¡y no el anterior al pull!
Carlos Heuberger