我的git存储库非常大,我想通过删除一些大文件来减小它的大小,我过去添加了这些文件,之后已经删除了,但是仍然在git历史中。现在我找到了git filter-branch --tree-filter命令。所以我试过这个:
git filter-branch --tree-filter 'DEL /content/de/files/bigfile.zip' --all
(我在Windows上)。
但调用此命令的结果是:
fatal: ambiguous argument '/content/de/files/bigfile.zip'': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
我不知道该怎么办。在当前工作目录中,该文件确实不存在。但它仍然存在于历史上的几个旧提交中。我的理解是,该命令将从每次提交中删除该文件。
答案 0 :(得分:5)
所以我的版本中的实际错误是,我使用单个引号而不是 double 引号。似乎,至少在Windows上,你必须使用它们。
也就是说,jthill的评论和Roberto的回答可能为手头的任务提供了更好的解决方案。
答案 1 :(得分:1)
您可能需要考虑BFG,这是git filter-branch的一种更快捷,更简单的替代方案。等效命令是:
$ bfg --delete-files bigfile.zip
https://rtyley.github.io/bfg-repo-cleaner/
免责声明:我是BFG的作者