删除git中无用的大文件

Posted amiezhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除git中无用的大文件相关的知识,希望对你有一定的参考价值。

推荐阅读:为什么你的 Git 仓库变得如此臃肿

有时候我们不小心提交了一些大文件上去,后来删除了,但是已经于事无补了,整个git的提及已经蹭蹭上去了。

这个时候怎么办呢?

1. git filter-branch

git filter-branch --force --index-filter git rm --cached --ignore-unmatch 文件名 --prune-empty --tag-name-filter cat -- --all

git filter-branch --index-filter每个提交的文件都复制到索引(.git/index)中

然后运行过滤器命令:git rm --cached --ignore-unmatch 文件名 ,让每个提交都删除掉“文件名”文件

然后--prune-empty 把空的提交“修剪”掉

然后--tag-name-filter cat 把每个tag保持原名字,指向修改后的对应提交

最后-- --all 将所有ref(包括branch、tag)都执行上面的重写

2. 删除缓存下来的ref和git操作记录

git for-each-ref --format=delete %(refname) refs/original | git update-ref --stdin
git reflog expire --expire=now --all

3. 垃圾回收

上面2步把大文件的索引都切断了,这个时候进行垃圾回收,就可以很明显看到效果了

git gc --prune=now

4. 把.git里面的修改推上去

这个时候普通的push是不行的,需要强推

git push --force

 

以上是关于删除git中无用的大文件的主要内容,如果未能解决你的问题,请参考以下文章

git进阶 | 03 -如何彻底删除git中的大文件

git进阶 | 03 -如何彻底删除git中的大文件

记一次删除Git记录中的大文件的过程

记一次删除Git记录中的大文件的过程

text 删除意外提交给git的大文件

Git如何删除历史记录中的大文件详解