如何将文件移入LFS后从git数据库中删除?

时间:2017-07-03 11:28:28

标签: git git-lfs

我有一些在git中意外跟踪的大文件。直到很多提交之后我才意识到。我将这些文件移动到git LFS中,但现在我想将它们从我的普通git数据库中删除,因为它们的增量占用了大量的空间。

1 个答案:

答案 0 :(得分:1)

请注意,所有解决方案都是历史记录重写,这需要与拥有repo克隆的每个人进行一定程度的协调,以避免您的工作被撤消。

可以处理此问题的三种工具,每种工具都有利有弊:

最专业的目标是lfs migratehttps://github.com/bozaro/git-lfs-migrate

另一种选择是BFG。根据我的经验,与lfs-migrate相比,它做了一些更好的事情,而其他事情则做得不那么好。它还可以选择只删除大文件而不用指针文件替换,如果你不关心破坏历史记录。 https://rtyley.github.io/bfg-repo-cleaner/

或者如果你想坚持使用git内置命令,那就是git filter-branch(但它会越来越慢)。您可以设置index-filtergit rm --cached --ignore-unmatch受影响的路径(如果他们不动。)这可能会很慢并且会破坏受影响的提交。您可以使用tree-filter替换受影响的路径和相应的指针文件,并插入合适的.gitattributes文件。这甚至更慢(并且可能更难以正确。)