Как вывести список всех файлов в коммите? - PullRequest
2463 голосов
/ 08 января 2009

Я ищу простую команду git, которая предоставляет красиво отформатированный список всех файлов, которые были частью фиксации, заданной хешем (SHA1), без посторонней информации.

Я пробовал:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Несмотря на то, что в нем перечислены файлы, он также содержит нежелательную информацию о различиях для каждого.

Есть ли еще одна команда git, которая предоставит именно тот список, который мне нужен, чтобы я мог избежать анализа его из вывода git show?

Ответы [ 29 ]

24 голосов
/ 08 января 2009
$ git log 88ee8^..88ee8 --name-only --pretty="format:"
19 голосов
/ 06 июля 2017

ОК, есть несколько способов показать все файлы в конкретном коммите ...

Чтобы уменьшить информацию и показывать только имена файлов, которые зафиксировали, вы можете просто добавить --name-only или --name-status флаг ..., эти флаги просто показывают вам имена файлов, которые отличаются из предыдущих коммитов сколько хочешь ...

Таким образом, вы можете сделать git diff с последующим --name-only, с двумя хешами коммитов после <sha0> <sha1>, что-то вроде ниже:

git diff --name-only 5f12f15 kag9f02 

Я также создаю изображение ниже, чтобы показать все шаги, которые необходимо выполнить в этой ситуации:

git diff --name-only 5f12f15 kag9f02

15 голосов
/ 28 марта 2010

Я использую это, чтобы получить список измененных файлов между двумя наборами изменений:

git diff --name-status <SHA1> <SHA2> | cut -f2
14 голосов
/ 03 ноября 2010

Мне нравится использовать

git show --stat <SHA1>^..<SHA2>
13 голосов
/ 12 января 2016
git show --name-only commitCodeHere
12 голосов
/ 14 октября 2015

Там также git whatchanged, что является более низким уровнем, чем git log

NAME
       git-whatchanged - Show logs with difference each commit introduces

Выводит сводку фиксации со списком файлов под ним с их режимами и, если они добавлены (A), удалены (D) или изменены (M);

$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363

выдаст что-то вроде:

commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <xx@xx.nl>
Date:   Tue Sep 29 17:23:22 2015 +0200

    added fb skd and XLForm

:000000 100644 0000000... 90a20d7... A  Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A  Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A  Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A  Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A  Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A  Pods/Bolts/Bolts/Common/BFTask.h
...

Я знаю, что этот ответ на самом деле не соответствует «без посторонней информации», но я все же думаю, что этот список более полезен, чем просто имена файлов.

11 голосов
/ 22 апреля 2009

Мне нравится это:

git diff --name-status <SHA1> <SHA1>^
10 голосов
/ 28 ноября 2013

Используйте простую однострочную команду, если вы хотите, чтобы список файлов был изменен во время последнего коммита:

git diff HEAD~1 --name-only
8 голосов
/ 25 августа 2011

Показать журнал.

COMMIT может быть пустым ("") или сокращено sha-1 или sha-1.

git log COMMIT -1 --name-only

Здесь будут перечислены только файлы, очень полезные для дальнейшей обработки.

git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"
8 голосов
/ 28 июля 2012

Список файлов, которые изменились в коммите:

git diff --name-only SHA1^ SHA1

Это не показывает сообщения журнала, лишние новые строки или любой другой беспорядок. Это работает для любого коммита, а не только для текущего. Не уверен, почему он еще не был упомянут вполне , поэтому я добавляю его.

...