为什么我的.git文件很大?

时间:2013-03-28 23:37:21

标签: git git-rewrite-history

我不小心在git目录中添加并提交了一些非常大的(100MB +)PSD文件。我们在目录中对这些文件进行了大量编辑,但后来意识到它们不应该存在并从目录中删除它们。

然后我跑了:

git add --all && git commit -m "Removed large psds"

我的目录中的文件现在加起来不到十几MB,但.git文件本身除外,这是700MB +。

这里发生了什么?它是否保留已删除的.PSD文件的旧版本?这是否意味着git不会清除从删除文件中获得的空间?我如何完全忘记这些文件,以便我可以重新调整.git文件大小?

2 个答案:

答案 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的作者。