我如何才能看到合并提交与同一父项的自动合并之间的差异?
How can I see a diff between merge commit and what would be an automatic merge of the same parents?
我历史上有过几次糟糕的合并(由于人为错误)。我想要一个快速的方法来找出我是否有更多类似的东西。为了自动化它,我想看看,对于每个合并提交,合并将自动执行(使用给定的冲突解决策略)与给定合并中实际发生的事情之间的区别。
我该怎么做?
您必须进行自动合并。
为此,检查可疑合并的两个 parents 之一,在此过程中给自己一个 "detached HEAD"。如果 $suspect_merge
包含适合可疑合并的名称(例如,哈希 ID):
git checkout $suspect_merge^1
然后,运行 git merge
在另一个 parents:
git merge [options] $suspect_merge^2
合并将完成并在分离的 HEAD 上进行新的提交,或者由于冲突而失败。如果失败,您可以手动正确完成,然后提交。
现在你有一个好的合并,你可以将其与可疑合并进行比较:
git diff $suspect_merge HEAD
当您 git checkout
任何命名分支时,您刚刚在分离的 HEAD 上进行的合并将被放弃。它最终(通常是 30 天后的某个时间,当它的 reflog 条目到期时)被垃圾收集。要保留它,请给它起个名字:分支或标签名称效果很好。
我历史上有过几次糟糕的合并(由于人为错误)。我想要一个快速的方法来找出我是否有更多类似的东西。为了自动化它,我想看看,对于每个合并提交,合并将自动执行(使用给定的冲突解决策略)与给定合并中实际发生的事情之间的区别。
我该怎么做?
您必须进行自动合并。
为此,检查可疑合并的两个 parents 之一,在此过程中给自己一个 "detached HEAD"。如果 $suspect_merge
包含适合可疑合并的名称(例如,哈希 ID):
git checkout $suspect_merge^1
然后,运行 git merge
在另一个 parents:
git merge [options] $suspect_merge^2
合并将完成并在分离的 HEAD 上进行新的提交,或者由于冲突而失败。如果失败,您可以手动正确完成,然后提交。
现在你有一个好的合并,你可以将其与可疑合并进行比较:
git diff $suspect_merge HEAD
当您 git checkout
任何命名分支时,您刚刚在分离的 HEAD 上进行的合并将被放弃。它最终(通常是 30 天后的某个时间,当它的 reflog 条目到期时)被垃圾收集。要保留它,请给它起个名字:分支或标签名称效果很好。