【问题标题】:Git: merge to master, then push back to all branchesGit:合并到master,然后推回所有分支
【发布时间】:2013-09-23 21:27:00
【问题描述】:

我希望有人能解释一个更好的方法。

假设我有“master”,然后是 master 的两个分支 - A 和 B。

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

然后我检查分支 B 并执行相同的操作...master 进入 B 然后备份到 master。

但是,在与 B 合并后,分支 A 不再是 master 的当前分支,这正是我现在想要的。我通常只是将 master 合并到 A,因为那将是我的分支,而 B 是同事。

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

我知道我可以修剪分支,但是在单独的分支上工作的用户每次都必须分支。一旦所有内容都合并到 master 中,我希望能够“同步”所有分支,以便用户可以在早上在同一个分支上接听,而不会跳过一个节拍。

有没有办法做到这一点?

【问题讨论】:

  • 一般来说,个人开发者应该决定他们什么时候想从 master 拉取。

标签: git github merge branch


【解决方案1】:

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

      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

做你想做的更好的方法: 只需将所有内容直接合并到master中即可。如果您只是再次将其合并回来,则不需要将 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

这正是你想要的,对吧?

【讨论】:

  • 天哪,这很有帮助,但即使没有,也要把这些都写出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2016-04-30
  • 2020-07-16
  • 2016-09-20
  • 2014-04-21
  • 1970-01-01
  • 2011-01-20
相关资源
最近更新 更多