预测特征分支在主分支中合并时的合并冲突。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预测特征分支在主分支中合并时的合并冲突。相关的知识,希望对你有一定的参考价值。

假设我有一个主分支和三个特性分支。在一个冲刺结束时,所有这些特性都准备好了,我想把它们全部合并到主分支。

merge feature1 into master => OK
merge feature2 into master => OK
merge feature3 into master => CONFLICTS!

虽然没有提交到主分支,但是仍然有一个合并冲突,因为feature3和feature1或者feature2冲突。

有什么工具可以预测这种合并冲突(看看哪些特性分支会产生合并冲突)?如果我可以预测到这一点,我就可以决定只将feature1和feature3合并到主分支。

谢谢

答案

预测合并冲突的方法是进行合并。1 使用一个临时分支来做这件事。

git checkout -b test master
git merge feature1
git merge feature2
git merge feature3

如果一切顺利,合并就会成功。 现在,如果你愿意,你可以使用这个最终的合并结果来进行 master 本身,通过做一个 快进 搬家 master 相称 test:

git checkout master
git merge --ff-only test   # --ff-only means "fail if fast-forward is not possible"

或干脆 删去test 如果你不想这样做,或者合并失败。 如果合并失败,使用 git merge --abort 如脚注1所示,退避三舍;或 git reset --hard 做同样的事情)。 然后使用 git checkout mastergit branch -D test:

git merge --abort          # if needed
git checkout master
git branch -D test

:使用单独的 "一刀切 "的唯一理由 test 上面的分支是为了避免有 master 移动,直到我们完成所有三个合并。 但由于分支名称是每个仓库的私有名称,所以从来没有任何的 要求 来做这件事:你可以只做合并,然后回滚(用 git reset --hard)到以前的状态,如果你不喜欢这个结果。 只要不 git push 的提交,或将其提供给 git fetch,直到得到你喜欢的结果。


1如果你愿意,你可以在不提交的情况下进行测试合并,然后使用 git merge --abort 假装你从未进行过测试。 但当你需要进行多个合并时,这就不行了,就像你问题中的情况。


八爪鱼合并了

不过还有另一种选择,Git称之为 章鱼合体. (注意:使用GitHub无法完成这些工作,可能在其他一些Web界面也无法完成。) 要做一个八爪鱼合并,把这三个功能都合并到一起。master 一次。

git checkout master
git merge feature1 feature2 feature3

如果有任何冲突,章鱼合并就会失败。

(我从未在实际工作中使用过章鱼合并。 它们并不能实现任何常规合并所不能实现的东西,而且人们觉得它们很混乱,所以我倾向于坚持使用常规合并)。)

以上是关于预测特征分支在主分支中合并时的合并冲突。的主要内容,如果未能解决你的问题,请参考以下文章

在 Subversion 中合并分支时的冲突预防

git合并重命名冲突

git 怎么提交合并分支的部分代码

GIT 分支管理:创建与合并分支解决合并冲突

Git创建分支及合并分支代码

Git如何合并分支代码