如何在合并提交和同一父项的自动合并之间看到差异?

时间:2017-11-14 08:01:57

标签: git bash git-merge git-diff

我在历史上有几个糟糕的合并(由于人为错误)。我想快速找出是否有更多这样的东西。为了使其自动化,我希望看到,对于每个合并提交,好像合并将自动执行(使用给定的冲突解决策略)和给定合并中实际发生的事件之间的区别。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您必须进行自动合并。

要做到这一点,请检查嫌疑人合并的两个父母中的一个,给自己一个分离的HEAD"进行中。如果$suspect_merge包含可疑合并的合适名称(例如,哈希ID):

git checkout $suspect_merge^1

然后,在另外两个父母身上运行git merge

git merge [options] $suspect_merge^2

合并将在您的分离的HEAD上完成并进行新的提交,或者由于冲突而失败。如果失败,您可以手动正确地完成它,然后提交。

现在您有一个良好的合并,可以与可疑合并进行比较:

git diff $suspect_merge HEAD

当您git checkout任何已命名的分支时,您刚刚在分离的HEAD上进行的合并将被放弃。最终(通常在30天之后,当其reflog条目到期时)将被垃圾收集。为了保持它,给它一个名字:分支或标签名称效果很好。