TLDR 我希望父分支(在线性分支中)在重新设置期间与新提交一起移动。
初始设置:多个功能分支(彼此重叠),每个都等待合并到主分支中
A--B--C--D <-master
\
E--F--G--H--I--J--K--L
^ ^ ^ ^
| | | feature_d
| | feature_c
| feature_b
feature_a
进行审核,将新的提交M
添加到feature_a
,然后将其合并到master
中:
A--B--C--D--N <-master
\ /
E--F--M <- feature_a
\
G--H--I--J--K--L
^ ^ ^
| | feature_d
| feature_c
feature_b
我要在这里进行基准调整。
期望的结果:将feature_d
变基以掌握和移动所有父分支:
A--B--C--D--N <-master
\ / \
E--F--M G'--H'--I'--J'--K'--L'
^ ^ ^
| | feature_d
| feature_c
feature_b
我知道如何执行此操作的方法是“手动”,即feature_d
的正常基准值,然后移动每个分支指针:
git checkout feature_d
git rebase master
git branch -f feature_b H'
git branch -f feature_c J'
这需要通过其sha手动搜索和引用新提交。它需要格外注意,并且容易出错。我希望有一个自动化的过程,像这样:
git checkout feature_d
git rebase master --magic-option-move-branches-to-new-commits
答案 0 :(得分:0)
此解决方案不是一个魔术命令,但它确实避免了手动命名提交。从最旧的分支开始,在每个分支的父分支之上重新建立其基础:
git checkout feature_b
git rebase master
git checkout feature_c
git rebase feature_b
git checkout feature_d
git rebase feature_c
我没想到这行得通。这是它起作用的解释:Git rebase skipping identical commits