误执行rm -r删除期末项目,如何从Git提交恢复或成功推送?
解决方法分两步:先恢复本地项目,再处理大文件推送问题
一、快速恢复本地被删除的项目文件
你的项目完整内容已经存在本地Git提交记录里,直接用Git命令就能恢复:
- 打开项目所在的终端,执行:
git checkout HEAD -- .
这个命令会把HEAD指向的最新提交里的所有文件恢复到本地工作区,不会改动现有提交历史。 - 或者执行
git reset --hard HEAD,这个命令会把整个本地仓库重置到最新提交的状态,适合你没有其他未保存本地修改的场景(你提到这是初始提交,用这个更直接)。
二、处理大文件推送失败的问题
你已经安装配置了Git LFS但推送失败,核心原因是之前的初始提交里已经包含了超100MB的文件,需要先把这个大文件从历史提交中移除,再用Git LFS重新跟踪它:
- 先确认大文件的具体路径(比如是
assets/large_dataset.tar) - 移除历史提交里的大文件:
执行git filter-branch --tree-filter 'rm -f assets/large_dataset.tar' HEAD
这个命令会遍历所有提交(这里仅初始提交),将指定大文件从历史记录中彻底删除 - 用Git LFS跟踪该大文件:
执行git lfs track "assets/large_dataset.tar",这会在本地生成.gitattributes文件,用来标记需要LFS管理的文件 - 重新添加并修改初始提交:
- 执行
git add assets/large_dataset.tar .gitattributes - 执行
git commit --amend,用新的提交内容覆盖原来的初始提交(如果不想修改提交信息,可以加--no-edit参数)
- 执行
- 最后尝试推送:
git push origin 你的分支名
如果git filter-branch执行有问题,也可以用更简化的流程修改初始提交:
- 恢复文件后,执行
git rm --cached assets/large_dataset.tar(仅移除暂存区的大文件,本地文件保留) - 执行
git lfs track "assets/large_dataset.tar" - 执行
git add assets/large_dataset.tar .gitattributes - 执行
git commit --amend --no-edit - 再执行推送命令即可
内容的提问来源于stack exchange,提问作者Yeet 3503
相关产品推荐
相关产品推荐

