如何使现有分支成为新分支的子代

时间:2017-06-27 18:14:42

标签: git

几个星期前,我分支了我们的开发部门来处理一个故事(Agile term)。最近,我们的发布经理决定让所有与功能相关的分支都成为功能部门的子级。

是否有一种简单的方法来自

develop
  |
  ---> My Branch
  |
  ---> Feature

要:

develop
  |
  ---> Feature
         |
         ---> My Branch

编辑:我没有意识到分支机构实际上没有父/子关系。这跟我的SO帖子中有一半的趋势让我听起来直言不讳。我很欣赏答案;他们帮助我找到了一条好的前进道路。

2 个答案:

答案 0 :(得分:1)

如果您需要做任何事情,那么rebase(正如其他人所建议的那样)可能会做什么。

但是你很有可能不做任何事情。

人们对像#34;父母分支"这样的概念感到困惑,这些概念根本不存在于git中。创建My Branch时,没有关于您所在分支的记忆。因此,只有提交拓扑实际上是错误的,才需要做任何事情。

假设您从

开始
x --- O <--(develop)

你创建了自己的故事分支,也许还做了一些工作。

x --- O <--(develop)
       \
        A <--(story)

现在,如果您的发布经理还没有决定将故事分支分组到功能分支中,那么您最终会将story合并回develop。但是现在你有了一个功能分支,但创建功能分支并没有改变任何有关提交的提交。

x --- O <--(develop)(feature)
       \
        A <--(story)

事实上,即使功能分支在故事分支之前已经存在,并且您已经检查过并在创建story时将其用作起点......图片将完全相同。在这种情况下,所有需要发生的事情是,当story分支完成后,您将其合并到feature而不是develop。 (假设--no-ff,则给出

x --- O <--(develop)
      |
      |-- M <--(feature)
       \ /
        A <--(story)

你有&#34;明显&#34;分支层次结构。)

不要说你从不必须修理任何东西。如果在创建develop和创建story的位置之间有feature提交,您可能确实想要重新定义story以使其与指定的分支点保持一致为feature。这通常看起来像

rebase --onto feature develop story

(然后,理想情况下,你应该重新测试重写的story分支上的每一个提交。如果你有自动构建/测试工具,那不应该是一个大问题......并且如果你不这样做,那么你并没有真正做到敏捷......)

前进:创建feature后,您会希望将其用作其他story分支的起点(a),以避免意外合并其他develop feature提交到story,以及(b)在将feature合并到xInner时减少不必要的合并冲突。

答案 1 :(得分:0)

分支没有子级,但是如果您希望Feature分支的当前提示的提交是My Branch的祖先,则应首先签出My Branch然后将其重新绑定在Feature分支之上。

git checkout My Branch
git rebase Feature

请注意,如果要保持此关系,则每次Feature分支移动时都必须再次执行此rebase。也就是说,每当有人提交Feature分支时,您必须重新运行上述两个命令。