如何做`git rebase <some-branch>`的“逆”?

kjo*_*kjo 4 git git-rebase

在下面的历史中,假设 commits BthroughE完全独立于 commits Fthrough I

                       br-1            master
  ? ---A---B---C---D---E---F---G---H---I
Run Code Online (Sandbox Code Playgroud)

我如何结束一个看起来像这样的历史:

                       master
  ? ---A---F'--G'--H'--I'
        \
         `-B---C---D---E
                       br-1
Run Code Online (Sandbox Code Playgroud)

?

br-1并且master应该是分支。素数F'表示commit F' 包含与进入 commit 完全相同的更改 F。同样,对于G'H'I'

(实际上,所需的操作与git rebase br-1from执行相反,从master上面显示的第二个历史记录开始。)

Per*_*son 6

两种选择。

1)

git checkout master
git rebase --interactive A
Run Code Online (Sandbox Code Playgroud)

删除 B 到 E 的行

2)

git checkout master
git rebase --onto A E
Run Code Online (Sandbox Code Playgroud)


cdh*_*wie 3

master出后:

git rebase --onto A br-1 master
Run Code Online (Sandbox Code Playgroud)