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

Git切回main分支代码未还原 旁支修改残留如何恢复main分支

问题原因

你在new-feature分支做的代码修改没有执行git commit提交,Git中未提交的工作区/暂存区改动不与分支绑定,切换分支时这类改动会被自动携带到目标分支,因此切回main后会看到带M标记的未提交修改,属于Git的正常行为,不是操作失误。

恢复步骤

注意:以下丢弃改动的操作不可逆,执行前确认所有new-feature相关的修改都无需保留
如果你确认新功能的所有改动完全不需要保留,按以下顺序执行即可:

  1. 丢弃所有未提交的改动,回到main分支最后一次提交的干净状态:
    • 如果改动没有加入过暂存区(未执行过git add命令),在仓库根目录直接执行:
      git restore .
      
    • 如果之前执行过git add把改动加入了暂存区,先撤销暂存标记,再丢弃工作区改动:
      git restore --staged .
      git restore .
      

    旧版本Git如果不支持restore命令,可以使用等价操作:git reset HEAD . 撤销暂存区改动,git checkout -- . 丢弃工作区改动。

  2. 执行完上述命令后,运行git status验证状态,当输出working tree clean时,说明main分支已经恢复到修改前的干净状态。
  3. 最后删除无用的new-feature分支即可,由于该分支没有产生任何独立提交,直接用普通删除参数即可:
    git branch -d new-feature
    
后续避坑提示

后续做分支测试时,如果临时需要切分支但不想提交半完成的代码,可以用git stash命令把未提交的改动临时封存到栈中,等切回功能分支后再用git stash pop恢复改动,就不会出现未提交代码跨分支携带的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:54:52