Как вывести список коммитов с момента определенного коммита?

151

Есть ли способ получить список коммитов с заданным номером фиксации в HEAD?

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

ehftwelve
источник
Какую команду Git вы использовали для вывода списка коммитов с заданным именем коммита?
Грег Хьюгилл, 07
Вы имеете в виду хэш фиксации, верно? Вы также можете использовать HEAD~10для обозначения «10 коммитов перед HEAD», чтобы вы могли это сделать git log HEAD~10.., если это то, что вы подразумеваете под номером коммита.
Cascabel

Ответы:

184
git rev-list <since_hash>..HEAD

или включить коммит:

git rev-list <since_hash>^..HEAD

Вы можете использовать git logвместо git rev-listas, чтобы получить дополнительную информацию.

Manojlds
источник
У меня это сработало отлично, спасибо! Клянусь, я пробовал это. Должно быть, сделал ошибку.
ehftwelve
@manojlds Я знаю, что HEADэто указывает на последние коммиты, но что это означает^
Касун Сиямбалапития
2
@KasunSiyambalapitiya ^- это псевдоним первого родителя. См. «УКАЗАНИЕ ИЗМЕНЕНИЙ» в kernel.org/pub/software/scm/git/docs/git-rev-parse.html - также см. Руководство git-scm.com/book/en/v2/Git-Tools-Revision -Выбор - или stackoverflow.com/questions/2221658/…
Michaelangel007
2
Я получаю огромный, огромный список SHA ... даже для фиксации, которая всего одна назад (одна ветвь слияния). О чем он мне говорит и чем это полезно?
ErikE
Если вас интересует только количество коммитов, вы можете указать --countопцию после rev-list. то есть:git rev-list --count <since_hash>..HEAD
Джон Шнайдер
79
git log <hash>..

Это наименьшее количество набора текста. Отсутствие «ГОЛОВА» предполагает, что вы имели в виду именно это. Rev-list тоже подойдет.

Адам Димитрук
источник
2
Этот - мой любимый. Мне нравится сочетать это с --oneline. Вместо <hash>, конечно, вы также можете использовать ссылку как имя ветки.
codener 07
2
Также git log HEAD~#..где #желаемое количество недавних коммитов.
user3.1415927
Диф самый лучший и лаконичный вариант!
Рикардо Родригес
39

Вы можете запустить следующую команду git из оболочки:

git log --pretty=oneline commit-id...HEAD
Матье
источник
12

Предполагая, что под "номером фиксации" вы подразумеваете хеш фиксации:

git log <commit-hash>..HEAD
хаммар
источник
1

Если кто-то здесь пытается выяснить, как МЕНЬШЕ использовать результат git logзапуска с определенного коммита, с разбивкой на страницы назад, это так же просто, как git log <hash>.

Мэтью Хинея
источник