调整Git仓库及.gitignore后本地远程文件全部丢失该如何解决?
Git误删本地及远程仓库文件恢复方案
前置操作
立即停止对当前仓库目录的所有写入操作,避免Git历史被覆盖。
恢复步骤
1. 定位有效历史提交
执行以下命令查看Git操作全记录,找到执行git rm -r --cached .之前的正常提交对应的哈希值(格式为7位左右的字符串,或HEAD@{数字}格式的标记):
git reflog
2. 恢复本地文件
二选一执行即可:
- 需丢弃所有错误提交,直接回退到正常版本:
git reset --hard <你找到的正常提交哈希值> - 需保留当前工作区改动,仅恢复被删文件:
git checkout <你找到的正常提交哈希值> -- .
执行完成后执行ls即可看到被误删的文件已恢复。
3. 同步恢复远程仓库
确认本地文件完整无误后,执行以下命令推送至远程仓库完成修复:
git add . git commit -m "恢复误删的所有文件" git push
注意事项
如果本地历史已损坏,可直接从远程仓库拉取删除前的版本:
git checkout origin/<你的分支名,通常为main或master> -- .
附:修改.gitignore的正确流程
后续调整.gitignore规则时按以下步骤操作可避免同类问题:
- 先将仓库所有文件备份到仓库外的独立目录
- 编辑
.gitignore文件添加需要忽略的规则 - 执行
git rm -r --cached .清除暂存区跟踪标记 - 执行
git add .重新按新规则扫描文件 - 执行
git status检查待提交列表,确认要保留的文件均已被跟踪、要忽略的文件已被排除 - 确认无误后再执行
git commit和git push操作
内容的提问来源于stack exchange,提问作者Mihai.Mehe
相关产品推荐
相关产品推荐

