如何清理 git 项目

mar*_*ort 2 git

我有一个 git 项目,但问题是目录“.git”太大了。事实上,我的整个项目是 3MB,但“.git”是 36MB。为什么这么大?我怎样才能清洁它?

mat*_*att 6

请记住,每次提交时,提交中每个更改的文件都会占用存储库中的空间。即使更改本身只是一个字母,整个文件也至少存在两次(更改前和更改后)。整个历史记录,每次提交中每个文件的状态,即使该文件在您工作的分支的末尾不再明显“存在”,都在 repo 中!

假设您有一个 1MB jpg 图像,并且您对其进行了 36 次更改并每次都提交。宾果游戏,存储库中有(至少)36MB。如果你现在删除那个 jpg 图像并提交,repo 不会因此变小。

我故意使用 jpg 作为我的例子;通常是二进制文件占用了大量空间。Git 可以为文本文件节省一些空间,但它不能在二进制文件中做到这一点。

话虽如此,但我也应该说:36MB 并不大。它相当大,但对于具有悠久历史的大型项目来说,存储库的大小并不是典型的。

  • 另外值得一提的是:Git 会生成一些“垃圾”或“垃圾”对象,然后留下这些对象。Git 会定期运行“垃圾收集器”“git gc”来自动清理。它选择的清理间隔可能并不总是符合您的个人喜好(例如,如果您认为 36 MB 很大:-))。您可以手动运行它——只需运行“git gc”——让它立即进行清理。然而,过于频繁地运行它会适得其反:当它一次处理更多的东西时,效率会更高。 (4认同)