git永久性删除文件,包括日志清除,让文件无法再次恢复

git是一个强大的版本控制软件,它有一个最大的特点是无论对一个文件做了什么改变,包括删除了都是可以恢复回来的。

有的时候,我们删除了一个文件后并不想让人有机会恢复它,或者我添加了一个很大的文件,删除后它还是占用着大量的空间。

要解决这个问题,也就是永久性地从git库中删除某个文件,包括日志等,方法如下:

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch file_name.txt" HEAD

rm -rf .git/refs/original/

git reflog expire --all

git gc --aggressive --prune

到这里,文件删除了,也再也恢复不了了。不过这时候有可能留下空的提交日志,清除办法如下:

git filter-branch --prune-empty

这样就完成了,再 force push 上去就完事了。

2013年09月04日