63

如果my-feature-branch被合并到my-main-branch,我如何查看从哪些提交中合并my-feature-branch

4

3 回答 3

70

git log abc123^..abc123
显示合并到 merge-commit中的提交abc123

创建一个git别名log-merge以便于重用:

$ git config --global alias.log-merge \
'!f() { git log --stat "$1^..$1"; }; f'
$ git log-merge abc123

对于单行版本:

$ git config --global alias.log-merge-short \
'!f() { git log --pretty=oneline "$1^..$1"; }; f' 
于 2014-05-07T03:30:57.547 回答
49

如果您想查看上次合并中合并的每个提交,您可以尝试:

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

现在我想我会把它作为别名:)

这些--graph --pretty=oneline --abbrev-commit选项是可选的。


资源 :

于 2011-05-31T18:26:16.467 回答
0

如果你有一个合并提交(比如a2345)并且说git log -1 a2345,它会告诉你父母的名字(即在这个提交中合并的提交)。那是你要找的吗?

于 2011-05-31T17:22:53.570 回答