Git切换分支后提交丢失,如何找回最新提交的代码?
找回丢失的Git提交
你的修改并没有真的丢失,只是因为分支操作的问题,提交未出现在当前development分支的日志里。按以下步骤找回:
- 查看所有HEAD历史(引用日志)
Git会记录所有HEAD的移动轨迹,包括未被任何分支指向的提交。执行命令:
git reflog
输出里会找到类似HEAD@{1}: commit: example message的条目,对应的哈希值(比如def5678)就是你之前完成的提交。
- 找回提交内容
- 若要将该提交合并到当前
development分支:git cherry-pick <提交哈希> - 若只是临时查看该提交的代码:
git checkout <提交哈希> - 若想直接将当前
development分支重置到该提交(会覆盖当前分支现有内容,确保当前无未提交修改后再执行):git reset --hard <提交哈希>
- 另一种排查方向:检查原主分支
你最初是在主分支(比如main或master)完成的提交,切换到development后工作区会替换为该分支的旧版本代码。可以切换回主分支确认:
git checkout main git log --oneline
如果找到那条example message的提交,再用cherry-pick将其复制到development分支即可。
问题根源
你最初在主分支完成了提交,但切换到development分支后,工作区会替换为该分支的旧代码。此时重复提交命令并没有把主分支的提交同步过来,反而因为当前工作区是旧版本,导致你误以为修改丢失。
内容的提问来源于stack exchange,提问作者Anonyo Noor
相关产品推荐
相关产品推荐

