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 个分支重置。
无论如何,都需要编写脚本才能扩展。
我遇到这样的情况:
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 个分支重置。
无论如何,都需要编写脚本才能扩展。