一个新git项目,同事误上传了一个大文件。导致每次拉下来都很慢。查了下一般用filter-branch命令清理历史或者用BFG Repo-Cleaner工具。
因为是个新项目,就不用这么麻烦,且听说git filter-branch操作比较慢。不如直接新建一个仓库传过去再改名。
或者新建一个分支,删了master在把他变成master(有个问题就是gitlab上的空间不会释放,目前正在找到释放的方法)。
##创建一个新的分支 git checkout --orphan latest_branch ##添加所有文件 git add -A ##提交更改 git commit -am "commit" ##删除需要替换的分支 git branch -D master ##重命名创建的分支为删除的分支 git branch -m master ##强制提交到远程仓库 git push -f origin master
在尝试新建分支以后发现,其实本地的项目大小是不变的。想了下次估计拉下来还是会比较大,于是试了一下BFG Repo-Cleaner工具。
BFG Repo-Cleaner工具却告诉我当前的commit被保护了,简单找了下没找到解决的办法。
于是尝试按照git filter-branch的流程最后清理一下回收空间,再推上去基本上重新拉下来的就不会有大文件了。
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now
参考:
Git+Gerrit如何永久删除历史文件(大文件/私密文件) - 腾讯云开发者社区-腾讯云 (tencent.com)
(44条消息) 三种清除Git提交历史的方法_蚁方阵的博客-CSDN博客_git删除提交记录
因累积太多无法提交到 github,如何清除历史变更记录? - SegmentFault 思否
Git如何永久删除文件(包括历史记录) - shines77 - 博客园 (cnblogs.com)
git删除全部提交历史,成为一个新的仓库 - 腾讯云开发者社区-腾讯云 (tencent.com)