ChatGPT解决这个技术问题 Extra ChatGPT

如何查看合并到合并提交中的提交?

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


R
Rob Bednark

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' 

这个解决方案很棒。我修改了命令的一个版本,所以我们可以得到一个“短”版本:$ git config --global alias.merge-log-short '!f() { git log --pretty=oneline "$1^..$1"; }; f'
R
Rob Bednark

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

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 选项是可选的。

资源 :

Git 合并基础

Git 日志

Git 修订版


git log --graph --onelinegit log --graph --pretty=oneline --abbrev-commit 的快捷方式。
我使这个答案更适合日常使用in this repository。欢迎您使用它。
N
Noufal Ibrahim

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


是的,这就是我想要的(虽然只显示 1 个提交)。我假设您也可以为普通的 git 日志视图执行此操作?
是的。如果您想浏览大量提交的父级,则 GUI (gitk) 更有用。对单个提交的限制是因为 -1。删除它,您将获得常规日志。
如果我删除 -1 它会显示所有提交消息的所有日志,这似乎没有用