重新建立另一个分支并删除旧分支的更改

And*_*ker 3 git branch rebase git-branch

我有:

A--B             (master)
    \    
     C--D        (bad-branch)
         \
          E--F   (my-branch)
Run Code Online (Sandbox Code Playgroud)

我想要的结果:

A--B             (master)
    \    
     E--F        (my-branch)
Run Code Online (Sandbox Code Playgroud)

我尝试重新建立my-branch基础,master但是当我推my-branch送到存储库时,它与原始版本合并,并且更改后的错误提交又回来了。

cam*_*amh 6

您可以使用该标志将多个提交重新设置到另一个分支--onto

首先确保您已签出要变基的分支(并非绝对必要,因为您可以提供要变基的参数,但一步一步通常更清晰、更容易)。

git checkout my-branch
# or git switch my-branch
Run Code Online (Sandbox Code Playgroud)

将前两个提交重新设置为 master:

git rebase --onto master @~2
Run Code Online (Sandbox Code Playgroud)

计算提交次数的另一种方法是仅使用错误的分支名称作为引用:

git rebase --onto master bad-branch
Run Code Online (Sandbox Code Playgroud)

在您的示例中,@~2onmy-branch是相同的提交,bad-branch因此它们可以互换使用。