如何恢复本地Git项目中已提交未删除的意外丢失源文件
本地Git源文件丢失恢复方案
你的所有src源文件在第一次执行git commit时就已经完整存入本地Git对象库,全程未执行删除操作的前提下文件不会丢失,按以下步骤操作即可完整找回:
- 定位初始提交哈希
在项目目录执行命令:
在输出的记录列表里,找到提交备注为git reflogAdd existing project files prior to the push to GitHub.的那条记录,复制记录开头的7位短提交哈希(格式类似f3a92c1)。reflog会记录本地所有HEAD指针的移动轨迹,默认保留90天内的所有本地提交记录,哪怕分支被删、切换到其他提交,记录也不会消失。
- 切回初始提交恢复文件
执行命令基于找到的初始提交创建恢复分支:
命令执行完成后,本地工作目录里的所有src源文件就会恢复到你第一次提交时的完整状态。git checkout -b file-recovery <你刚才复制的提交哈希> - 正确推送到空白GitLab仓库
之前推送失败、文件"消失"的核心原因是你误pull了其他无关仓库的提交历史,产生了不相关历史冲突,后续切到远程拉下来的无源码分支时,工作区自然只显示对应分支的文件,并不是源码被删除。按以下流程重新推送即可:- 清除之前配置错误的远程关联:
git remote remove origin - 重新绑定你自己的空白GitLab仓库地址:
git remote add origin <你的GitLab仓库完整访问地址> - 将当前恢复好文件的分支重命名为你需要的主分支名(需要用main就填main,需要用master就填master):
git branch -M main - 首次推送到空白远程仓库,执行强制推送即可完成上传:
git push -uf origin main
- 清除之前配置错误的远程关联:
注意事项
- 操作前不要在当前所在分支执行提交、合并、硬重置类操作,避免reflog记录被覆盖,按流程操作找回成功率为100%。
- 空白远程仓库首次推送前不需要执行
git pull,空仓库没有任何提交记录,pull必然会报不相关历史错误。
内容的提问来源于stack exchange,提问作者user3001381
相关产品推荐
相关产品推荐

