嗨我有一个主分支,我做了一个分支(让我们称之为分支A)。我需要在该分支上实现一个不同的功能,然后我从分支A创建了一个分支(比如分支B)。现在分支A合并为主人。如何将Branch B合并到master?
------------------
/ BRANCH B
---------------------------
/ BRANCH A
-----------------------------------------
MASTER
现在看起来像这样:
------------------
/ BRANCH B
---------------------------
/ BRANCH A
-----------------------------------------
MASTER + BRANCH A CHANGES
答案 0 :(得分:1)
你需要合并B,就像你合并A.Git现在将如何处理已经合并过的提交。
git checkout master
git merge B
答案 1 :(得分:1)
可能你可以像任何其他合并一样进行。
我认为人们对分支机构的身份有点过于笼罩 - 或者更重要的是,人们会混淆分支机构#34; (一个可移动的ref;即一个指向某个提交的名称),带有一组提交。举个例子
x --- O --- x --- x <--(master)
\
A1 --- A2 --- A3 <--(branchA)
\
B1 --- B2 <--(branchB)
现在branchA
是一个当前指向A3
的指针。许多人认为branchA
是提交的集合(A1
,A2
,A3
),因此他们错误地说明了它的含义删除分支,或将其合并,或者对其进行重新定位,或以任何方式对其进行操作。
当您将branchA
合并到master
时,git并不关心这类事情。它只看到O
是从branchA
和master
可以访问的最近提交;可以从A1
访问A2
,A3
和branchA
,但不能从O
访问x
;也许可以从master
但不能从O
访问各种x --- O --- x --- x ----- M <--(master)
\ /
A1 --- A2 --- A3 <--(branchA)
\
B1 --- B2 <--(branchB)
次提交。它使用该信息来计算合并(如果遇到任何困难,请求帮助),然后给你留下
branchB
现在,如果您合并A2
,git可能会将branchB
标识为master
和B1
可以访问的最新提交。 B2
和branchB
提交可以从A2
但不能从M
到达;也许A3
,x
和各种master
提交可以从A2
但不能从branchA
到达。并且可能很好地计算得到的合并。
那说,如果它没有顺利进行,你可以通过查看A3
(或branchA
来简化git的事情,这可能很棘手但是如果您已删除branchB
),合并master
,然后签出branchA
并再次合并AND [PartNumber] IN (@PartNumber1, @PartNumber2, @PartNumber3, @PartNumber4)
,仍然可行。这会将合并计算分解为两个更小/更简单的部分,并导致合并拓扑(根据您的偏好)更加对称,因此更整洁,或者更加混乱,因此更加混乱。
答案 2 :(得分:0)
有两种方法可以将B
合并到master
中(假设A
在提交master
时合并到K
):
A---B---C---D--------K master
\ /
E---F---G---H Branch A
\
I---G Branch B
选项1:将B重新绑定到A,然后将B合并到主
git rebase --onto A A B
,然后分支结构将如下所示:
A---B---C---D--------K master
\ /
E---F---G---H Branch A
\
I'---G' Branch B
然后将B合并为主(git merge B
):
A---B---C---D-------K---------L master
\ / /
E---F---G---H / Branch A
\ /
I'---G' Branch B
选项2:直接将B合并到主人(这会导致更多冲突)
git merge B
A---B---C---D--------K---L master
\ / /
E---F---G---H / Branch A
\ /
I--------G Branch B