我不小心在git目录中添加并提交了一些非常大的(100MB +)PSD文件。我们在目录中对这些文件进行了大量编辑,但后来意识到它们不应该存在并从目录中删除它们。
然后我跑了:git add --all && git commit -m "Removed large psds"
我的目录中的文件现在加起来不到十几MB,但.git文件本身除外,这是700MB +。
这里发生了什么?它是否保留已删除的.PSD文件的旧版本?这是否意味着git不会清除从删除文件中获得的空间?我如何完全忘记这些文件,以便我可以重新调整.git文件大小?
答案 0 :(得分:12)
您的.git文件夹非常大,因为PSDs文件仍然存在于存储库中。要删除它们,您需要使用git filter-branch
修改历史记录。 Here解释了如何使用此命令。之后,您将需要清理存储库。
我创建了一个脚本来帮助完成这项工作。如果您想使用它,可以从github下载。欢迎提出任何意见。
答案 1 :(得分:0)
您希望使用BFG Repo-Cleaner,这是git-filter-branch
的一种更快,更简单的替代方案,旨在从Git repos中删除大文件。
下载BFG jar(需要Java 6或更高版本)并运行此命令:
$ java -jar bfg.jar --strip-blobs-bigger-than 10MB my-repo.git
任何超过10MB的文件(不在最新提交中)都将从Git存储库的历史记录中删除。然后,您可以使用git gc
清除死数据:
$ git gc --prune=now --aggressive
BFG通常比运行git-filter-branch
快10-50倍,并且选项是围绕这两种常见用例量身定制的:
完全披露:我是BFG Repo-Cleaner的作者。