即使删除GIT文件仍保留在历史记录中

时间:2018-11-29 16:08:20

标签: git

我在git中有一个大文件,后来被删除了。 file_123.xlsx

由于它的大小,我也想从历史记录中删除它,但似乎无法删除。我遵循了许多其他人的指示,内容如下:

git filter-branch --index-filter "git rm -r -rf --cached --ignore-unmatched file_123.xlsx" HEAD

哪个显示文件被删除

rm 'file_123.xlsx'
rewrite xxxxx (168/168)
Ref 'refs/heads/master' was rewritten

然后我按照以下步骤进行垃圾收集

git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

但是,当我转到对象文件夹时,仍然可以在文件包中找到该文件。我首先这样做是为了列出较大的Blob ID。

git verify-pack -v packxxx.idx | sort -k 3 -n | tail -3

123abc blob xxx xxx xxx
456abc blob xxx xxx xxx
789abc blob xxx xxx xxx

然后我查看列表中的最后一个

git rev-list --objects --all | grep 789abc

这显示了我尝试删除的文件:

789abcfile_123.xlsx

我的git文件夹的大小完全没有减小。我是否缺少某些内容,或者只是不删除此文件?

1 个答案:

答案 0 :(得分:2)

您的过滤器命令为git filter-branch … HEAD,但您的列表命令为git rev-list … --all。也就是说,您过滤了一个分支(master),但在所有分支中搜索了文件。

也过滤所有其他分支:

git filter-branch --index-filter "git rm -r -rf --cached --ignore-unmatched file_123.xlsx" -- --all