git rebase将两个功能分支掌握在彼此之上

时间:2017-11-09 16:05:19

标签: git rebase

我有这样的情况:

                                   H---I---J feature2
                                  /
                         E---F---G  feature1
                        /
           A---B---C---D  master

我希望让我的主人保持最新,因为在处理这些功能时它经常变化。我目前的工作方式如下:

git checkout master
git pull
git checkout feature1
git rebase master
git checkout feature2
git rebase feature1

有没有更简单的方法来完成所有这些步骤?我正在使用最新的黑貂git版本。此外,我有时甚至有6个特征分支就有这样的情况,所以如果任何解决方案可以在另一个特征分支之上扩展,那将会很棒。

1 个答案:

答案 0 :(得分:1)

实际上,仅feature2重新定位重新定义feature1,因为它会复制其提交并将其重播到master

然后,您可以将feature1重置为新的HEAD提交,位于' n'在feature2 HEAD之前提交。
您可以先count the number of commits of feature2使用:

git checkout feature2
git rev-list --count HEAD ^feature1 # memorize that in 'n'

然后rebase(不需要结账主人和拉):

git fetch
git rebase origin/master

                                           H'---I'---J' feature2
                                          /
                    master     E'---F'---G' 
                       |      /
           A---B---C---D--Y--Z  origin/master
                        \
                         E--F--F (feature1)

最后reset feature1

git branch -f feature1 feature2~n

因此,如果我们将该场景扩展到6个分支:

  • 一个rebase(即使连续6个分支)
  • 但是5 git rev-list(计算其他分支HEAD的位置)
  • 和5个git branches重置。

在任何情况下,都需要编写脚本才能进行扩展。