本文主要是介绍永久删除git库中的所有大文件或者机密文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
永久删除git库中的所有大文件或者机密文件
有时我们忘记了在gitignore中添加大文件或者二进制文件或者记录账号密码的文件,最后又不小心把他们commit了。
如果直接
git rm some-files
只能使得后面的commit中都不包括这些文件,如果是账号密码文件,别人可以从以前的commit中获取,
如果是大文件,整个git库的大小依然很大
所以解决的办法就是在git仓库中的删除所有的相关文件和记录,采用git filter-branch
来处理
假设有如下文件,我们需要删除*.db的文件
删除前的.git库的大小
删除匹配*.db的所有文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.db' --prune-empty --tag-name-filter cat -- --all
执行结果
立刻回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
执行结果
回收空间后.git库大小
最后把改动强制推送到远端
git push origin --force --all
完成收工~
参考链接
http://blog.mallol.cn/如何给git仓库瘦身删除大文件.html
https://help.github.com/articles/removing-sensitive-data-from-a-repository/
这篇关于永久删除git库中的所有大文件或者机密文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!