Показать коммиты, вовлеченные в предыдущее слияние git - PullRequest
48 голосов
/ 31 мая 2011

Скажем, я создаю ветку hotfix из ветки develop, делаю два коммита, объединяю ее с веткой develop и уничтожаю ветку hotfix.

Как мне узнать, какие коммиты были частью слияния? Это возможно?

Ответы [ 3 ]

53 голосов
/ 07 мая 2014

Скажите, что ваш коммит слияния ab2f8173, git log ab2f8173^..ab2f8173 покажет коммиты, в которые он слился.

Вот как превратить это в псевдоним git для легкого повторного использования:

$ git config --global alias.merge-log '!f() { git log --stat "$1^..$1"; }; f'
$ git merge-log 0865c12
37 голосов
/ 31 мая 2011

Если вы хотите видеть все коммиты, объединенные в последнем слиянии, вы можете попробовать это:

git log $(git merge-base --octopus $(git log -1 --merges --pretty=format:%P)).. --boundary

Вот пример моего текущего журнала:

$ git log --graph --pretty=oneline --abbrev-commit
* 44899b9 pouf
*   8f49f9c Merge branch 'test'
|\  
| * 3db39ca test
* | 69f431c pif
* | df1f51c lala
|/  
* 8fae178 pif2
* 20f8ba6 init

Если я толькохочу коммиты, связанные с последним слиянием, которое я должен использовать git log -1 --merges --pretty=format:%P, что дает мне родителей первого доступного слияния:

$ git log -1 --merges --pretty=format:%P
69f431cec7859b61d33c7503c9431ceea2aaf3e0 3db39ca3ab1e8f70462db23d94590628b5e7ad7b

Теперь, когда я знаю, каких родителей мне нужно отслеживать, мне нужна их общая базачто я могу получить с помощью git merge-base --octopus (--octopus есть на всякий случай):

$ git merge-base --octopus $(git log -1 --merges --pretty=format:%P)
8fae178666e34a480b22e40f858efd9e7c66c3ca

Теперь с помощью git log я могу искать каждый коммит начиная с базы до текущего HEAD и вуаля:

$ git log $(git merge-base --octopus $(git log -1 --merges --pretty=format:%P)).. --boundary --graph --pretty=oneline --abbrev-commit 
* 44899b9 pouf
*   8f49f9c Merge branch 'test'
|\  
| * 3db39ca test
* | 69f431c pif
* | df1f51c lala
|/  
o 8fae178 pif2

Если вы немного перфекционист, вы также можете сделать это:

$ git log $(git merge-base --octopus $(git log -1 --merges --pretty=format:%P))..$(git log -1 --merges --pretty=format:%H) --boundary --graph --pretty=oneline --abbrev-commit 
*   8f49f9c Merge branch 'test'
|\  
| * 3db39ca test
* | 69f431c pif
* | df1f51c lala
|/  
o 8fae178 pif2

Теперь я думаю, что я оставлю это как псевдоним:)

PS:Очевидно, вам не нужно сохранять --graph --pretty=oneline --abbrev-commit опции


Ресурсы:

1 голос
/ 31 мая 2011

Если у вас есть коммит слияния (скажем a2345) и вы говорите git log -1 a2345, он сообщит вам имена родителей (т.е. коммиты, которые были объединены в этом коммите). Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...