显示涉及先前git合并的提交

问题描述

| 假设我从
develop
分支创建了一个
hotfix
分支,进行了两次提交,将其合并回
develop
分支,并销毁了
hotfix
分支。 我如何找出哪些提交是合并的一部分?那可能吗?     

解决方法

        如果要查看在上一次合并中合并的每个提交,可以尝试以下操作:
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
获得的共同基础(以防万一–章鱼):
$ git merge-base --octopus $(git log -1 --merges --pretty=format:%P)
8fae178666e34a480b22e40f858efd9e7c66c3ca
现在,使用
git log
,我可以搜索自当前HEAD和voilà的基础以来的所有提交:
$ 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
选项 资源: Git合并基础 Git日志 Git修订     ,        假设您的合并提交为
ab2f8173
git log ab2f8173^..ab2f8173
将显示其合并到的提交。 这是将其转换为
git
别名以方便重用的方法:
$ git config --global alias.merge-log \'!f() { git log --stat \"$1^..$1\"; }; f\'
$ git merge-log 0865c12
    ,        如果您有一个合并提交(例如
a2345
)并说
git log -1 a2345
,它将告诉您父母的名字(即在此提交中被合并的提交)。这就是您要找的东西吗?