我有一些在git中意外跟踪的大文件。直到很多提交之后我才意识到。我将这些文件移动到git LFS中,但现在我想将它们从我的普通git数据库中删除,因为它们的增量占用了大量的空间。
答案 0 :(得分:1)
请注意,所有解决方案都是历史记录重写,这需要与拥有repo克隆的每个人进行一定程度的协调,以避免您的工作被撤消。
可以处理此问题的三种工具,每种工具都有利有弊:
最专业的目标是lfs migrate
。 https://github.com/bozaro/git-lfs-migrate
另一种选择是BFG。根据我的经验,与lfs-migrate相比,它做了一些更好的事情,而其他事情则做得不那么好。它还可以选择只删除大文件而不用指针文件替换,如果你不关心破坏历史记录。 https://rtyley.github.io/bfg-repo-cleaner/
或者如果你想坚持使用git内置命令,那就是git filter-branch
(但它会越来越慢)。您可以设置index-filter
到git rm --cached --ignore-unmatch
受影响的路径(如果他们不动。)这可能会很慢并且会破坏受影响的提交。您可以使用tree-filter
替换受影响的路径和相应的指针文件,并插入合适的.gitattributes
文件。这甚至更慢(并且可能更难以正确。)