Git技术问题:暂存变更后操作失误,无法恢复最新提交
解决Git误在旧提交上apply stash导致的切换分支问题
嘿,我完全懂你现在的懊恼——本来只是想切去旧提交核对点内容,结果手滑把stash的修改糊到了 detached HEAD 状态的旧提交上,现在连切回master都卡壳了。别慌,咱们一步步把局面掰回来:
第一步:先清理当前detached HEAD的混乱状态
- 先执行
git status确认下当前的文件状态,看看哪些文件因为误操作出现了未提交修改或者冲突。 - 如果刚才的
git stash apply带来了冲突或者不需要的修改,直接执行git reset --hard HEAD,这会把当前目录完全恢复到旧提交A的干净状态——放心,你之前stash的内容存在本地仓库的独立存储区里,这个操作不会碰它。
第二步:切回master分支
现在当前状态已经干净了,直接执行:
git checkout master
这下应该能顺利回到你原来编辑代码的master分支了,不会再提示文件冲突之类的问题。
第三步:恢复你之前暂存的代码修改
回到master后,执行正确的命令恢复你的 stash:
git stash apply
- 如果应用过程没有冲突,你就能继续之前的编辑工作了;
- 如果出现冲突,先手动解决文件里的冲突标记,然后执行
git add <冲突文件名>标记冲突已解决,之后可以选择git stash drop删掉这个已经应用过的stash(或者留着也没关系,之后用git stash clear批量清理也行)。
小提醒
以后切换到旧提交时,记得Git会提示你处于「detached HEAD」状态,操作前多瞟一眼命令行的分支提示,就能避免这类手误啦~
内容的提问来源于stack exchange,提问作者bob.sacamento
相关产品推荐
相关产品推荐

