IntelliJ有非常方便的Git日志功能来检查合并提交的详细信息(参见下面的截图+https://www.jetbrains.com/help/idea/log-tab.html#changedFiles)。
它显示了“combined diff”,合并结果与每个父提交(#1,#2)的比较-基本上它是git show merge_commit_sha -m
的内容
我的问题:
1.我如何精确地复制合并提交的组合差异,我们在#3中看到(合并中涉及的所有文件的结果内容+父内容),只使用cli + vanilla git?是否可以通过一些花哨的git diff
或git show
选项来实现?我怀疑它可能是smth像git diff --cc --combined-all-paths
?
1.我怎么能看到历史信息,哪些特定文件在合并过程中发生了冲突(一个人必须解决的文件)?
1条答案
按热度按时间2skhul331#
根据你之前的评论,我建议看看合并提交(Git 2.36+,2022年第二季度):
^!
父代的简写概念为:r1^!
表示法包括提交r1
,但不包括它的所有父代。就其本身而言,该符号表示单个提交
r1
。<rev>
是一个“修订版”,通常命名一个提交对象。您可以将
<rev>
(包括<
和>
)替换为:@
(HEAD的快捷方式)在每一种情况下,在这个问题的上下文中,
<rev>
必须表示一个merge commit,一个(大多数情况下)有两个父节点的commit。<rev>
提交表示两个父节点之间合并的结果。我如何查看在合并过程中哪些特定文件发生冲突的历史信息(需要解决的文件)?
为此,您需要Git 2.38, Q3 2022:
您可以将
branch1
和branch2
替换为提交<rev>
父级:discussion之后,OP是给定
merge_commit_sha
的3个命令之后:1.要查看用户在尝试合并时看到的内容,请在用户解决任何冲突并提交合并之前,合并冲突文件-与非冲突文件+冲突文件有很大区别
1.查看合并冲突解决和合并提交期间发生的实际差异(用户可能会添加一些修复甚至新文件)
1.查看合并提交时发生在repo上的批量更改(合并提交更改本身+自提交分叉以来在2个分支中发生的所有组合更改)