执行git checkout后丢失Git提交,如何恢复本地分支原有状态?
修复Git Detached HEAD并恢复原有提交
1. 定位目标提交哈希
执行git reflog,在输出记录里找到你执行git checkout origin:remote-branch-name之前的条目,对应的一串7位(或更长)字符的哈希值,就是包含合并提交和未推送提交的目标状态位置。
2. 恢复本地分支并关联HEAD
假设你的本地分支与远程分支同名(比如main,替换成你的实际分支名):
- 切换回本地分支:
git checkout main - 将本地分支指针直接移动到目标提交(完全保留原有提交历史,不生成新提交):
git reset --hard <你找到的哈希值>
如果忘记本地分支名,执行git branch即可查看所有本地分支,不带*标记的就是你需要的分支。
3. 验证修复结果
- 执行
git log确认合并提交和新增提交都在历史记录中 - 执行
git status会显示当前处于本地分支上,工作区无未提交变更 - 再次尝试
git push,即可正常推送之前未推送到远程的提交
⚠️ 注意:git reset --hard会清除当前工作区和暂存区的未提交修改,若有未保存的改动,先执行git stash暂存,之后可通过git stash pop恢复。
内容的提问来源于stack exchange,提问作者Electric-Gecko
相关产品推荐
相关产品推荐

