git:显示一系列/一组提交中重叠的更改

3

如何最好地可视化分支内一系列/集合的Git提交中重叠的更改?这些更改在我使用rebase -i重新排序提交时可能会创建变基冲突。


2
Rebase 逐个应用提交。在解决了之前 rebase 的提交的冲突之前,你不会知道下一个“重叠”的提交是什么。 - Alexey Larionov
@Alexey 当然,这样的可视化无法知道程序员如何解决高度非本地的冲突。因此,问题在于轻量级本地重叠可视化的情况:第二次提交中的更改编辑或在第一次提交中的更改范围内的3行以内。例如,考虑适用于分支内连续内容的 diff-tree -cc 过滤可视化,适用于具有多个父项的合并提交... - kxr
你最好的选择可能是继续进行rebase(或单个cherry-pick操作),让冲突发生,然后显示冲突。在一个临时的detached-HEAD上执行此操作,并切换回原始分支,以便抛弃cherry-pick提交。 - torek
1个回答

2
如果您正在使用 Git 2.38+ (Q3 2022),您可以执行以下操作:
git merge-tree --write-tree --no-messages --name-only branch1 branch2

这将列出具有冲突的文件(而不实际执行合并)。
空输出意味着:两个分支之间没有重叠。

但对于交互式变基则不适用,因为如评论所述,潜在的重叠取决于以前重叠的解决方法。


我认为这对此处没有太大帮助。几个(连续的)巨大提交。我知道重新排序上有相当多的重叠/冲突。仅列出文件不会说太多。我想看到更详细/差异的重叠内容 - 例如聚合差异。可视化可能类似于diff-tree -cc用于多个父合并提交,但适用于连续提交内容:第1列+-从第1次提交,第2列从第2次提交...或其他合适的方式。 - kxr
@kxr,你可以看到类似于差异的结果,而不需要使用 --name-only 参数,但我同意这对你的用例并不适用。 - VonC
然而,了解这种新语法非常棒。不幸的是,我的Git版本不够新,无法尝试它! - matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接