Отображение коммитов, сделанных непосредственно в ветке, игнорируя слияния в Git - PullRequest
76 голосов
/ 16 декабря 2011

При использовании git, есть ли способ показать коммиты, сделанные в ветке, игнорируя при этом все коммиты, которые были введены слиянием?

Я пытаюсь просмотреть изменения кода, сделанные в ветке, игнорируя изменения, которые мы сделали в других ветвях, которые были объединены. Я знаю, что чертовски почти невозможно показать различия таким способом, но яМне бы хотелось узнать, какие коммиты мне нужно просмотреть.

Ответы [ 3 ]

111 голосов
/ 16 декабря 2011

--no-merges

У обоих родителей одинаковый вес во многих контекстах в git. Если вы всегда были последовательны в объединении других изменений, то вы можете обнаружить, что это дает вам то, что вы хотите.

git log --no-merges --first-parent

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

git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3

Если вы хотите просмотреть изменения, которые вы собираетесь объединить обратно в основную ветвь, тогда проще всего выполнить слияние с локальным клоном, а затем просто посмотреть на diff с первым родителем, прежде чем публиковать сливаться.

7 голосов
/ 24 июля 2013

Вы можете использовать git cherry для этого, он найдет вас коммиты, которые еще не были объединены с восходящим потоком, или коммиты, которые находятся в одной ветви, но не в другой. Итак, даны две ветки с именами «твоя ветка» и «мастер»:

git cherry -v your-branch master

представит вам список коммитов по сравнению с их идентификатором патча:

+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake

Вы можете заметить, что коммиты с префиксом "-" появляются в обеих ветвях, тогда как коммиты с префиксом "+" доступны только в вашей ветке.

В качестве альтернативы вы можете использовать:

git log --pretty=format:"%h %s" your-branch..master --no-merges

, который покажет вам список коммитов, выполненных на "your-branch", которых еще нет на "master"

3 голосов
/ 16 декабря 2011

Очень хакерский путь:

git log --graph --oneline --no-merges thebranch|grep '^\*'

...