git 变基以掌握彼此之上的两个功能分支

git rebase to master two feature branches on top of each other

我遇到这样的情况:

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

我想让我的 master 保持最新状态,因为它在处理这些功能时变化非常频繁。我目前的工作方式如下:

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

有没有更简单的方法来完成所有这些步骤?我正在使用最新的 sable git 版本。此外,有时我什至有 6 个功能分支也会遇到这种情况,所以如果任何解决方案都可以扩展到另一个之上的许多功能分支,那就太好了。

实际上,仅 feature2 变基会 也会 变基 feature1,因为它会复制其提交并将它们重播到 master

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

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

然后变基(不需要检查 master 和 pull):

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 个分支:

  • 一个变基(即使有 6 个连续的分支)
  • but 5 git rev-list(计算另一个分支 HEAD 的位置)
  • 和 5 git 个分支重置。

无论如何,都需要编写脚本才能扩展。