如何使 git 将 SHA 插入冲突文件而不是提交注释?

How to make git insert SHAs into conflicted file instead of commit comments?

当我变基并出现冲突时,冲突文件如下所示:

<<<<<<< c50c817dad7008a3760241084de2b83fd4f84288
it was on master 456
=======
it was on master 123
>>>>>>> branch - set up README conflict

有时候其他人不会做出这么好的提交信息,所以我可能会得到这样的结果:

<<<<<<< c50c817dad7008a3760241084de2b83fd4f84288
it was on master 456
=======
it was on master 123
>>>>>>> fixed stuff

问题在于,如果有多个 "fixed stuff" 提交,我将很难找到确切的提交。有什么方法可以让 git 始终使用 SHA 哈希而不是提交消息?

很遗憾,没有。

好吧,另一方面:是的,有点:使用分离的 HEAD 和 cherry pick 手动提交,通过 ID 以便 git 没有可以替换的名称。不过,这违背了 rebase 的大部分目的(rebase 自动进行挑选,最后加上分支名称更新)。

不过,您不应该需要这样做,原因有二。你无法控制的是人们不应该使用蹩脚的提交消息。 :-) 您 可以 使用的是当 rebase 因冲突而停止时,HEADCHERRY_PICK_HEAD 识别两个冲突提交的 SHA-1。有关详细信息,请参阅 the git cherry-pick documentation

(我还建议将 merge.conflictstyle 设置为 diff3,这样您就可以看到基本版本。rebase/cherry-pick 不像完全合并那样必要,但我喜欢它。 )