Estoy buscando un simple comando git
que proporcione una lista bien formateada de todos los archivos que formaron parte del commit dada por un hash (SHA1), sin información extraña.
Lo he intentado:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Aunque lista los archivos, también incluye información diff no deseada para cada uno.
¿Hay algún otro comando git
que me proporcione sólo la lista que quiero, de modo que pueda evitar analizarla desde la salida de git show
?
Modo preferido (porque es un comando de plomería; pensado para ser programático):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Otra forma (menos preferida para los scripts, porque es un comando de porcelana; pensada para el usuario)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
--no-commit-id
suprime la salida del ID de la confirmación.--pretty
especifica una cadena de formato vacía para evitar el desorden al principio.--name-only
muestra sólo los nombres de los archivos que fueron afectados (Gracias Hank). Utilice --name-status
en su lugar, si quiere ver lo que ha ocurrido con cada archivo (Delegado, Mmodificado, Aañadido)-r
es para recurrir a los subárbolesUna combinación de "git show --stat
" (gracias Ryan) y un par de comandos sed deberían recortar los datos por ti:
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
Eso producirá sólo la lista de archivos modificados.