Pregunta ¿Cómo hacer una lista de todos los archivos en una confirmación?


Estoy buscando un simple git comando que proporciona una lista muy bien formateada de todos los archivos que fueron parte de la confirmación dada por un hash (SHA1), sin información extraña.

Yo he tratado:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Aunque enumera los archivos, también incluye información de diff no deseada para cada uno.

Hay otro git comando que proporcionará solo la lista que quiero, para que pueda evitar analizarlo desde el git show ¿salida?


2171
2018-01-08 12:26


origen


Respuestas:


Camino Preferido (porque es un plomería mando; destinado a ser programático):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

De otra manera (menos preferido para los scripts, porque es un porcelana mando; destinado a ser orientado al usuario)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • los --no-commit-id suprime la salida de ID de confirmación.
  • los --pretty argumento especifica una cadena de formato vacía para evitar el cruft al principio.
  • los --name-only El argumento muestra solo los nombres de los archivos afectados (Gracias Hank).
  • los -r argumento es recurse en sub-árboles

2853
2018-01-08 13:02



Si desea obtener una lista de archivos modificados:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Si desea obtener una lista de todos los archivos en una confirmación, puede usar

git ls-tree --name-only -r <commit-ish>

189
2018-01-14 19:22



Voy a asumir que gitk no es deseado para esto En ese caso, prueba git show --name-only <sha>.


180
2018-01-08 12:34



Yo personalmente uso la combinación de --stat y --una línea con el espectáculo mando:

git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD

Si no le gusta / quiere las estadísticas de adición / eliminación, puede reemplazar --stat con --name-only

git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD

113
2017-07-11 23:21



Recientemente necesité enumerar todos los archivos cambiados entre dos commits. Así que utilicé este comando (también * nix específico)

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

Actualizar: O como señala Ethan a continuación

git diff --name-only START_COMMIT..END_COMMIT

Utilizando --name-status también incluirá el cambio (agregado, modificado, eliminado, etc.) al lado de cada archivo

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



También puedes hacer

git log --name-only

y puede navegar a través de varias confirmaciones, mensajes de confirmación y los archivos modificados.

Escriba q para recuperar su solicitud.


56
2018-05-27 01:20



La forma mas simple:

git show --stat (hash)

Es más fácil de recordar y le dará toda la información que necesita.

Si realmente desea solo los nombres de los archivos, puede agregar --name-only opción.

git show --stat --name-only (hash)


48
2017-07-16 00:06



yo suelo cambiado alias a bastante a menudo. Para configurarlo:

git config --global alias.changed 'show --pretty="format:" --name-only'

entonces:

git changed (lists files modified in last commit)   
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)

Comandos similares que pueden ser útiles:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only

45
2018-04-29 13:13



Usando el comando estándar de git diff (también es bueno para scripting):

git diff --name-only <sha>^ <sha>

Si desea también el estado de los archivos modificados:

git diff --name-status <sha>^ <sha>

Esto funciona bien con las asignaciones de fusión.


34
2018-04-29 14:53



$ git log 88ee8 ^ .. 88ee8 --name-only --pretty = "formato:"

23
2018-01-08 14:11



Lo uso para obtener una lista de archivos modificados entre dos conjuntos de cambios:

git diff --name-status <SHA1> <SHA2> | cut -f2

15
2018-03-28 07:37