You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何撤销feature-branch-2到feature-branch-1的Git变基操作?

恢复feature-branch-2到rebase前的初始状态

别担心,这种rebase之后发现问题想反悔的情况太常见了,咱们可以通过Git的reflog工具或者直接重置到已知提交来恢复,具体步骤如下:

方法1:用reflog找历史状态(最推荐,记不清原提交也能用)

  1. 先切回feature-branch-2:
    git checkout feature-branch-2
    
  2. 查看所有HEAD的变更记录——Git的reflog会记下你所有的分支切换、提交、rebase操作,哪怕是修改历史的操作也留痕:
    git reflog
    
    你会看到类似这样的输出(每条记录对应一次操作):
    a1b2c3 HEAD@{0}: rebase finished: returning to refs/heads/feature-branch-2
    d4e5f6 HEAD@{1}: rebase: d: 这里是你feature-branch-2原提交d的信息
    g7h8i9 HEAD@{2}: checkout: moving from feature-branch-1 to feature-branch-2
    j0k1l2 HEAD@{3}: commit: d: 这里是你feature-branch-2原提交d的信息
    
    找到rebase开始之前的那条记录,也就是你在feature-branch-2上最后一次正常提交的那条(比如上面的j0k1l2 HEAD@{3}: commit: d:...)。
  3. 硬重置到这个状态,彻底抹掉rebase带来的所有变更:
    git reset --hard j0k1l2
    # 或者直接用HEAD@{3}这种标记,根据你reflog里的实际编号来
    git reset --hard HEAD@{3}
    

方法2:直接重置到已知的原提交哈希

如果你还记得feature-branch-2在rebase前的顶端提交是d,并且知道它的哈希值(可以通过git log --oneline develop查看,因为d是从b分支出来的),那可以更直接:

git checkout feature-branch-2
git reset --hard <提交d的哈希值>

重要提醒

  • git reset --hard会直接丢弃当前分支上所有未提交的修改,以及rebase带来的新提交,所以执行前一定要确认没有未保存的工作——如果有,可以先用git stash暂存起来,之后再用git stash pop恢复。
  • 完成操作后,feature-branch-2就会回到初始的b -> c -> d状态,这时候你就可以安全地把它合并到develop分支了。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:44:01