创建新分支未提交变更致工作内容丢失的Git问题求助
恢复未提交丢失内容的实操步骤
1. 检查工作区与暂存区
先排查当前本地的基础状态:
- 执行
git status,确认是否存在未跟踪、已暂存但未提交的文件 - 执行
git diff,查看工作区文件与当前HEAD的差异 - 执行
git diff --cached,查看暂存区文件与当前HEAD的差异
2. 利用Git reflog回溯操作记录
Git的reflog会记录所有HEAD的变动轨迹,包括未提交的操作:
- 执行
git reflog,查看所有历史操作节点(比如创建新分支前后的checkout、commit记录) - 找到疑似包含丢失内容的节点哈希值,执行
git show <commit-hash>查看具体内容 - 确认是目标内容后,执行
git checkout <commit-hash>切换到该节点恢复内容
3. 检查自动缓存的stash
部分场景下Git会自动暂存变更,可排查stash列表:
- 执行
git stash list,列出所有缓存的stash记录 - 执行
git stash show <stash-name>,查看对应stash的内容详情 - 确认匹配后,执行
git stash apply <stash-name>恢复缓存内容
4. 扫描Git对象库查找孤立文件
Git会将所有操作对象存储在本地仓库,可尝试找回孤立的未提交对象:
- 执行
git fsck --lost-found,该命令会把所有无关联的Git对象导出到.git/lost-found/目录 - 进入
.git/lost-found/other/目录,执行git cat-file -p <object-hash>逐个查看对象内容,找到目标文件后直接导出保存
5. 检查新创建的分支
切换到你新建的分支,执行 git log --oneline 和 git diff,确认是否在分支创建时意外携带了部分变更
内容的提问来源于stack exchange,提问作者Damith Pavithra
相关产品推荐
相关产品推荐

