我的git仓库是相当大的,我想通过删除一些大的文件,我添加了过去,后来已经删除,但仍然在git的历史上,以缩小其大小。 现在我find了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>...]'
我不知道该怎么办。 在当前的工作目录中,文件确实不存在。 但是在历史上还有一些旧的承诺。 我的理解是,该命令会从每次提交中删除文件。
所以在我的版本中的实际错误是,我用单引号,而不是双引号。 看起来像,至少在Windows上,你必须使用这些。
也就是说,jthill的评论和Roberto的回答可能为目前的任务提供了更好的解决方案。
你可能想要考虑BFG,一个更快,更简单的替代git filter-branch。 等效的命令是:
$ bfg --delete-files bigfile.zip
https://rtyley.github.io/bfg-repo-cleaner/
免责声明:我是BFG的作者