记一次git项目重置(即删除删除历史文件、大文件或隐私文件)

 一个新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)

posted @ 2022-10-13 17:20  eastegg  阅读(670)  评论(0编辑  收藏  举报