git filter-branch --tree-filter导致'未知修订版或路径不在工作树中'

时间:2016-05-20 15:40:26

标签: windows git git-filter-branch

我的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>...]'

我不知道该怎么办。在当前工作目录中,该文件确实不存在。但它仍然存在于历史上的几个旧提交中。我的理解是,该命令将从每次提交中删除该文件。

2 个答案:

答案 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的作者