Git切回main分支代码未还原 旁支修改残留如何恢复main分支
问题原因
你在new-feature分支做的代码修改没有执行git commit提交,Git中未提交的工作区/暂存区改动不与分支绑定,切换分支时这类改动会被自动携带到目标分支,因此切回main后会看到带M标记的未提交修改,属于Git的正常行为,不是操作失误。
恢复步骤
注意:以下丢弃改动的操作不可逆,执行前确认所有new-feature相关的修改都无需保留
如果你确认新功能的所有改动完全不需要保留,按以下顺序执行即可:
- 丢弃所有未提交的改动,回到main分支最后一次提交的干净状态:
- 如果改动没有加入过暂存区(未执行过
git add命令),在仓库根目录直接执行:git restore . - 如果之前执行过
git add把改动加入了暂存区,先撤销暂存标记,再丢弃工作区改动:git restore --staged . git restore .
旧版本Git如果不支持
restore命令,可以使用等价操作:git reset HEAD .撤销暂存区改动,git checkout -- .丢弃工作区改动。 - 如果改动没有加入过暂存区(未执行过
- 执行完上述命令后,运行
git status验证状态,当输出working tree clean时,说明main分支已经恢复到修改前的干净状态。 - 最后删除无用的
new-feature分支即可,由于该分支没有产生任何独立提交,直接用普通删除参数即可:git branch -d new-feature
后续避坑提示
后续做分支测试时,如果临时需要切分支但不想提交半完成的代码,可以用git stash命令把未提交的改动临时封存到栈中,等切回功能分支后再用git stash pop恢复改动,就不会出现未提交代码跨分支携带的问题。
内容的提问来源于stack exchange,提问作者Rui Nian
相关产品推荐
相关产品推荐

