Git:合并到master,然后回到所有分支

时间:2013-09-18 23:05:59

标签: git github merge branch

我希望有人可以解释更好的方法。

假设我有“主人”,然后是主人的两个分支--A和B.

通常,当我完成分支A时,我将master合并到A中,解决所有冲突,然后合并到master。

然后检查分支B并执行相同操作...掌握到B中然后备份到主人。

但是,在与B合并之后,分支A不再是主流,这就是我想要的。我通常只将主人合并到A,因为那将是我的分支,B是同事。

这很好,但是当我们添加员工并试图同步所有分支时会很烦人。

我知道我可以修剪分支,但是那时在不同分支上工作的用户每次都必须分支。我希望能够在将所有分支合并到主服务器后“同步”所有分支,这样用户就可以在早上在同一分支上接收而不会跳过一个节拍。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

好的,让我们想象一下。 这是你进行任何合并之前的历史:

      O       A
     /
O - O - O     master
     \
      O - O   B

然后,您将master合并到A并将其合并回master

      O - O  A, master
     /   / 
O - O - O  
     \
      O - O  B

然后,您对B执行相同的操作。将master合并到B

      O - O      A, master
     /   / \
O - O - O   \
     \       \
      O - O - O  B

然后将其合并回master

      O - O      A
     /   / \
O - O - O   \
     \       \
      O - O - O  B, master

正如你所看到的,这样做会造成很多混乱。但是,要在此处Amaster同步,请将其合并。这将是一个快速前进,然后看起来像那样:

      O - O
     /   / \
O - O - O   \
     \       \
      O - O - O  A, B, master

OR

做你想做的更好的方法: 将所有内容直接合并到master中。如果您再次合并它,则不需要将master合并到另一个分支中。即使出现合并冲突,由于无法推动合并冲突,因此在完成此操作并推送之前,没有人会注意到您正在分支机构中工作。直接合并到master将产生以下结果(与您的相同,但AB指向其他地方):

        O           A
      /   \
O - O - O - O - O   master
     \        /
      O  -  O       B

然而,这使您没有合并AB。他们仍然指出一个旧的提交。所以,快进将它们合并到master中。那将使你的历史看起来像这样:

        O
      /   \
O - O - O - O - O   A, B, master
     \        /
      O  -  O

当您现在再次在AB中提交某些内容时,它们会有所不同,并使历史记录看起来像这样:

        O         O    A
      /   \      /
O - O - O - O - O      master
     \        /  \
      O  -  O     O    B

这正是你想要的吗?