Как запустить git log, чтобы увидеть изменения только для конкретной ветки?


396

У меня есть локальная ветка, отслеживающая удаленную / основную ветку. После запуска git-pullи git-log, журнал покажет все коммиты в удаленной ветви отслеживания, а также текущую ветку. Однако, поскольку в удаленную ветку было внесено так много изменений, мне нужно увидеть только коммиты, сделанные в текущей локальной ветке.

Какую команду Git можно использовать для отображения коммитов только для определенной ветви?

Ноты:

Информация о конфигурации:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master

Ответы:


527

Предполагая, что ваша ветвь была создана вне master, тогда в то время как в ветке (то есть, у вас есть проверенная ветвь):

git cherry -v master

или

git log master..

Если вы не в ветке, то можете добавить имя ветки в команду "git log", например так:

git log master..branchname

Если ваша ветка была сделана из origin/master, то скажите origin/masterвместо master.


100
Отлично! git log --no-merges master..было именно то, что мне было нужно.
Шоссе Жизни

3
@HighwayofLife: --no-mergesможет показаться, что он показывает только коммиты из определенной ветви, но на самом деле он показывает только коммиты, которые не привели к слиянию
rynmrtn

5
Как насчет способа сделать это, который не требует, чтобы я напечатал / знал родительскую ветвь? :)
ELLIOTTCABLE

1
Чтобы получить представление о скорости изменения, я использовал следующее заклинание :), которое создает однострочный формат журнала, в котором сначала указывается имя автора, а затем относительный возраст коммита:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman

2
не должен читать? git log master .. <твоя ветка> --oneline --no-merges
Алекс Ноласко

104

Использование:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

Это только для целевой ветви (конечно, --graph, --abbrev-commit --decorate являются более полирующими).

Ключевой вариант --first-parent: «Следить только за первым родительским коммитом при просмотре коммит слияния» ( https://git-scm.com/docs/git-log )

Это предотвращает отображение вилок фиксации.


25
--first-parent <branch_name>это вариант. работает !
парасри

3
Где ветка-это что, ветка, историю которой я только хочу увидеть? На ветке только с 3 изменениями это показывает мне сотни.
Эд Рэндалл

1
--first-parent <branch_name>тоже работал на меня! В итоге я получил псевдоним git log --first-parent $current_branch_name --no-merges. В ответ на @EdRandall он покажет коммиты на ветке + те, где он был разветвлен. Например:
Рэйчел

2
К сожалению, я представил в ближайшее время, вот пример: у вас есть коммиты A и B на мастере. Вы ветвь new_featureот мастера. Вы добавляете коммиты C и D к нему. Затем вы добавляете E и F к мастеру. Затем вы объедините мастер в new_feature. Используя git logon new_feature, вы увидите «мастера слияния», F, E, D, C, A, B. Используя git log --first-parent new_feature --no-merges, вы увидите D, C, A, B.
Рэйчел

24

Если вам нужны только те коммиты, которые сделаны вами в определенной ветке, используйте команду ниже.

git log branch_name --author='Dyaniyal'

13

У меня была проблема, которая, по-моему, схожа с тем, что мастер был слишком далеко впереди моей точки ветвления, чтобы история была полезной. (Переход к точке ветвления займет слишком много времени.)

После некоторых проб и ошибок это дало мне примерно то, что я хотел:

git log --graph --decorate --oneline --all ^master^!

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