如何让git插入SHA到冲突的文件中,而不是提交注释



当我重新建立数据库并发生冲突时,冲突的文件如下所示:

<<<<<<< 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

这样做的问题是,如果有多个"固定内容"提交,我将很难找到确切的提交。有没有办法让git总是使用SHA哈希而不是提交消息?

不幸的是,没有。

好吧,另一方面:是的,有点:使用一个分离的HEAD和cherry-pick手动提交,通过ID,这样git就没有可以替换的名称了。不过,这在很大程度上违背了rebase的目的(rebase自动进行樱桃采摘,并在最后更新分支名称)。

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

(我还建议将merge.conflictstyle设置为diff3,这可以让您看到基本版本。它不像完全合并那样需要重新基本/樱桃选择,但我喜欢它。)

最新更新