Git数据丢失恢复咨询:未提交修改及分支回滚后的数据找回
Git数据恢复问题解答
问题1:主分支所有数据被切换至较晚提交后丢失,能否找回该部分数据?
可以找回。Git会记录本地仓库的所有操作历史,哪怕是被覆盖的提交,只要本地仓库未被删除,就能通过以下步骤恢复:
- 执行
git reflog命令,查看本地所有分支的操作记录,找到被覆盖前的目标提交哈希值(一串7位或更长的字符)。 - 直接切换到该提交:
git checkout <目标提交哈希>,此时会进入分离头指针状态;若要保留该提交,可创建新分支:git branch recover-branch <目标提交哈希>,之后切换到新分支即可继续工作。
问题2:06/01向Git推送代码后,一个月仅修改文件但未执行add、commit及push操作,同事拉取更早提交覆盖工作文件,未提交的修改能否找回?
分两种情况处理:
- 从未执行过
git add:这类修改仅存于本地工作区,Git并未对其做任何快照记录,被覆盖后无法通过Git工具恢复。只能尝试使用系统级文件恢复工具,比如Windows回收站、macOS Time Machine、Linux的extundelete等,看能否找回被覆盖前的文件版本。 - 曾执行过
git add但未commit:Git会将已add的文件内容暂存到对象库中,可通过以下步骤尝试恢复:- 执行
git fsck --lost-found,该命令会扫描Git对象库,将丢失的对象存入.git/lost-found/other目录。 - 查看该目录下的文件内容,找到对应修改的文件,将其复制到工作区即可。
- 执行
内容的提问来源于stack exchange,提问作者mikanim
相关产品推荐
相关产品推荐

