6

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

然后我跑了:

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

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

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

4

2 回答 2

14

您的 .git 文件夹非常大,因为 PSD 文件仍然存在于存储库中。要删除它们,您需要使用 修改历史记录git filter-branch这里解释如何使用这个命令。之后,您将需要清理存储库。

我创建了一个脚本来帮助这项工作。如果你想使用它,你可以从github下载它。欢迎任何意见。

于 2013-03-29T02:49:01.713 回答
2

您想使用BFG Repo-Cleaner,这是一种更快、更简单的替代方案,git-filter-branch旨在从 Git 存储库中删除大文件。

下载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 通常比运行快 10-50 倍,git-filter-branch并且这些选项是围绕以下两个常见用例量身定制的:

  • 删除疯狂的大文件
  • 删除密码、凭证和其他私人数据

全面披露:我是 BFG Repo-Cleaner 的作者。

于 2013-03-31T22:07:16.797 回答