如何记录"分辨率"非冲突合并?

时间:2016-08-10 14:50:47

标签: git git-merge git-rebase

我知道我可以使用rerere来记录合并与冲突的解决方案

但在我目前的情况下,这对我没有帮助:

我有一个实验分支,我使用--strategy ours合并到我的主分支,丢弃我在那里做的任何更改,但保留所有历史记录以供将来参考。实验分支的变化与主分支中的任何变化无关,因此没有冲突,因此rerere没有记录任何内容。

现在我想重新定义历史的这一部分(使用--preserve-merges),但由于没有冲突,Git愉快地使用默认策略重放合并,而不是<我最初使用的em>我们的策略。现在,来自过时的实验分支的所有更改都会在我的重新分支主分支中结束(但我希望它们再次被丢弃)。

我如何教Git记住我使用的合并策略,并在重新定位时重复使用它们?

3 个答案:

答案 0 :(得分:1)

您可能可以运行git rebase -p -i(交互式)并使用手动exec git merge -sours ...调用替换选择合并。注意我没有测试它是否有效。

答案 1 :(得分:1)

您还可以使用具有此功能的脚本git-rehi免责声明:我编写):它检测ours合并(通过比较树哈希)并重放它们作为ours

还有其他工具:git-reintegrategit-remerge等您可以查看是否这样做。

答案 2 :(得分:0)

我相信您正在寻求强制递归合并。您可以通过添加--no-ff来完成此操作,并且将进行合并提交。

  

- 无-FF

     

即使合并解析为快进,也会创建合并提交。这是合并带注释(可能已签名)标记时的默认行为。

来自git-scm documentation