Git rebase --onto 压扁的分支

Git rebase --onto squashed branch

我需要一些帮助,了解如何使用 git rebase --onto 有效地变基工作分支。我试着按照这个文档 https://womanonrails.com/git-rebase-onto

上下文

我从 branch-A 分支 branch-B。同时 branch-A 被合并到 origin/main 并且他的提交被压缩到 I.

Old situation                             Current situation
A---B---C---F---G---I (origin/main)       A---B---C---F---G---I (branch)
         \         /                               \
          D---E---H (branch-A)                      D---E---H---J---K (branch-B)
                  \                                 
                   J---K (branch-B)                 

预期结果

我想删除提交 DEH 并基于 I

Expected result                                   
A---B---C---F---G---I (branch)
                     \
                      J'---K' (branch-B)               

我不知道我需要在第三个参数上使用哪个提交...

git rebase --onto origin/main HERE

谢谢!

我记得它是一个英文句子:

rebase (from) old_parent (up to) branch_tip onto new_parent

即:

git rebase old_parent branch_tip --onto new_parent

(请注意,参数的顺序与某些人编写它们的顺序不同;--onto new_parent 是一个选项,而不是位置参数,因此可以放在任何地方,我只是觉得它更合乎逻辑结束而不是开始。)

你的情况:

  • old_parent 是图表上显示为 H
  • 的提交哈希
  • branch_tipbranch-B(默认为当前签出的分支)
  • new_parentI 又名 origin/main

因此查找提交“H”的实际提交哈希,以及运行:

git rebase H branch-B --onto origin/main

或:

git switch branch-B
git rebase H --onto origin/main

或者,如果您希望将 --onto 放在首位:

git switch branch-B
git rebase --onto origin/main H