【发布时间】:2017-05-18 08:42:44
【问题描述】:
我有一个文件“npz,species_coex.npz”,它被错误地添加到了我的 git 存储库中。在意识到我的错误后,我用 git rm 将其删除。现在我发现,git 仍然知道它(这通常很好,但我希望 git 完全忘记它,就好像它从来没有添加过一样)。
我已阅读有关 filter-branch 命令的信息,但不想使用它,因为所有关于它的警告,如果这不可能,请告诉我。
我读过this,他们推荐:
$ git filter-branch --tree-filter 'rm -f "npz, species_coex.npz" ' HEAD
我得到错误:
fatal: ambiguous argument 'npz, species_coex.npz': unknown revision or path not in the working tree
我不确定,为什么会出现这个问题,因为空格(我猜不是,因为我把它放在引号中)或者因为文件不在当前头部?我怎样才能告诉他这个文件在哪里可以找到?
有没有办法,我如何在没有过滤器分支的情况下做到这一点?我只添加了一次文件然后删除了它,所以它的历史很简单
【问题讨论】:
-
--tree-filter非常慢,但引用的建议应该有效。看来您实际上在filter-branch中使用了git rm而不仅仅是rm。要更快地删除不需要的文件,请考虑使用“BFG”(搜索该名称);但请注意,它与任何过滤器分支都有相同的问题:您必须将存储库,或至少将“坏”文件及其之后的所有部分复制到不再与原始提交兼容的新提交,并且 每个人都必须改变以适应这种情况。
标签: git