¿Cómo se muestran los files agregados desde un commit en git?

Si tengo una SHA de confirmación determinada, ¿cuál es la mejor manera de mostrar solo los files que se agregaron a través de esa confirmación? Gracias.

"Lo mejor" es complicado (¿cuál es el mejor sabor de helado?) Pero hay muchas maneras.

Salida más corta, pero supone que la confirmación no es una combinación [editar: o, bueno, ver a continuación]:

 git diff --name-only --diff-filter=A <id>^ <id> 

La forma más sencilla de usar esto es probablemente con un git alias:

 git config alias.files-added '!git diff --name-only --diff-filter=A $1^' 

(tenga en count que la ejecución de git files-added sin arguments dará un post extraño de "mala revisión", pero bueno).

Si necesita manejar confusiones de fusión, debe decidir qué significa "agregar un file". ¿Se agregó el file si no estaba en ninguno de los padres? ¿Se agrega si no estaba en todos los padres? Por ejemplo, suponga que ha combinado subtopic-A , subtopic-B y subtopic-C en un topic , y que el file xyz estuvo presente tanto en el subtopic-B como en el topic , pero que no estaba presente ni en el subtopic-A ni en el subtopic-C . ¿Fue xyz "agregado"?

Editar: si la definición de "agregado" significa "no estaba en lo que la mayoría llamaría la 'línea principal' antes de la fusión", este mismo command funcionaría. Es decir, si estás en un topic twig como el anterior, y fusionas una o más twigs en el topic y la confirmación de fusión final contiene galumph file cuando el topic no tenía un file llamado galumph antes, esto se consideraría "agregado" ( no importa cuál, si alguno, de las twigs fusionadas lo tuviera).

Después de un poco más de investigación, esta parece ser una solución bastante confiable.

git show -m –name-status -1 -U | grep $ 'A \ t'