Жуткий журнал одной ревизии


181

У меня есть коммит c. Я хочу получить ревизию этого точного коммита с + метаинформации и никого другого. Есть ли более простой способ, чем git log -p c^..cсделать это?

Ответы:



60

Ответ Михала Трыбуса - лучший для простоты. Но если вам не нужен diff в выходных данных, вы всегда можете сделать что-то вроде:

git log -1 -U c

Это даст вам журнал коммитов, и вы получите полный контроль над всеми опциями git logging для ваших целей автоматизации. В вашем случае вы сказали, что хотите изменить набор. Самый понятный способ сделать это:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

Или, если вы используете версию git больше, чем 1.8.X, это будет:

git log --name-status --diff-filter="ACDMRT" -1 -U c

Это даст вам результаты, похожие на:

commit {c}
Author: zedoo <zedoo@stackoverflow.com>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

Конечно, вы можете отфильтровать любые события, которые сочтете нужным, и отформатировать возвращаемый результат по своему желанию с помощью традиционных команд git-log, которые хорошо описаны здесь .


14
Если вы не хотите различий, делайте git show --name-only <sha1>!
мая

16
Если вам просто не нужен diff, используйте git show -s <commit>.
Моеффю

3
Что делает -1? Где это задокументировано?
Алекс

1
@alex Смотрите вывод в git help logразделе «Ограничение коммитов ». Или посмотрите git-scm.com/book/en/v2/… -<number> ограничивает количество коммитов для вывода.
LarsH


0

Вы можете использовать для фильтрации изменений по описанию коммита:

git log --grep='part_of_description' -p

где git log --grep='part_of_description'выберите коммиты, которые содержат 'part_of_description' и -pпокажите набор изменений каждого коммита

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.