如何在没有整个分支的情况下仅重新进行两次提交?

Zyg*_*gro 5 git

我不小心犯了一个错误的分支.图表看起来像这样

----o--o-----o (master)
     \
      \
       A--B--C--D (feature)
Run Code Online (Sandbox Code Playgroud)

我希望将C和D移动到主控,而不需要更改A和B.我希望图形看起来像这样

----o--o-----o (master)
     \        \
      \        C--D (other_feature)
       \
        A--B (feature)
Run Code Online (Sandbox Code Playgroud)

这可能吗?以及如何在遥控器上做到这一点?

A和B的变化不会合并,所以我不关心提交是否会丢失

Cod*_*ice 11

警告:以下git命令将重写feature分支的历史记录.git rebase并且git reset是危险的,因为它可以对正在使用该feature分支的任何其他人造成严重破坏.

首先other_feature在同一个提交中创建分支feature.

git checkout -b other_feature feature
Run Code Online (Sandbox Code Playgroud)

将前两个提交重新登录到master.

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

结帐feature.

git checkout feature
Run Code Online (Sandbox Code Playgroud)

重置feature为您想要的提交.

git reset --hard HEAD~2
Run Code Online (Sandbox Code Playgroud)

  • 警告:此答案重写了“功能”分支的历史记录。尽管对于这个特定问题这可能是可以的,但是通常应该谨慎地采取这种措施,因为它会对使用“功能”分支的其他任何人造成严重破坏。 (2认同)