如果子分支基于父分支,我在哪里合并子分支?

时间:2018-04-07 22:07:21

标签: git

分支A从master分叉,分支B从分支A分叉。一旦B生成,A对自己做了一些提交。 Master可以从其他分支进行额外的提交,与A和B无关。下图说明了这种情况:

enter image description here

  1. 当母公司A尚未合并为母公司时,分公司B是否应合并为公司或分公司A?
  2. 当父母分支A合并为母版时,分支B是否应合并为分支A或母版?
  3. 如果A和B都已准备好进行拉取请求,那么应首先合并哪个分支?

2 个答案:

答案 0 :(得分:2)

长话短说:这取决于你的流量。

B在结账前有所有A的提交,但是,由于A的提交不在B中(在结账后提交),它们是不同的分支,应该被视为。

将B合并为Master将向Master添加所有B的提交,并在结帐之前将来自的A提交。

将A合并到Master将添加所有A的提交,并且在将B合并到Master时,唯一要添加的提交是两个分支之间的差异(B中的提交不在A中)。

根据你在做什么,以及每个分支的变化以及实际有意义的内容,你合并到哪个分支,只需记住以上内容。

祝你好运!

答案 1 :(得分:0)

我通常会在合并之前对它们进行修改。

git checkout A
git rebase master
git checkout master
git merge --no-ff A  # --no-ff is optional.
                     # With --no-ff, there will be a merge commit.
                     # Without --no-ff, history will be linear.

然后我会为分支B做同样的事情。

通过这种方式,您最终可以减少纠结的历史记录,并确保合并点没有冲突。

在rebase期间应用每个提交时会出现任何冲突。这通常会使冲突更容易处理。更重要的是,由于合并提交中不会发生冲突,因此所有更改都可以链接回特定的非合并提交,这样可以在以后搜索历史记录时更轻松。

在重新定位分支时,请务必牢记其含义。重新绑定有效地重放新状态之上的每个提交。即使没有语法冲突,也可能存在语义冲突。也就是说,就Git而言,一切都可能进展顺利,但结果并没有像预期的那样发挥作用。

重新定位后,请始终验证每次提交以确保没有任何内容损坏。

进一步阅读: