为什么 git 不会进一步减小存储库大小



我有一个只有一个提交的存储库,签出大小为 95M。 但是,我无法获得低于 213M 的 .git 文件夹大小。 但是,如果我创建一个具有相同文件内容的新存储库,我会得到一个只有 38M 的 .git 文件夹。

有没有办法让 git 重建其对象,以使大小更符合创建新存储库的数字?

我尝试了git gc --prune=now --aggressivegit repack -adf --window=250 --depth=250来减小存储库大小。他们将存储库从原来的 220M 降低。

我想 git 一定在某个地方保留了一个引用以防止垃圾收集,但我不知道它们会在哪里。 我已经删除了所有遥控器和分支,除了"refs"下的当前分支之外,我没有看到任何其他内容

$ ls -R .git/refs
.git/refs/:
heads  tags
.git/refs/heads:
master
.git/refs/tags:

我从具有较长历史记录的现有存储库创建了存储库。 我使用 checkout --orphan 创建了一个新的无基分支,然后进行了提交以创建一个具有存储库状态的新提交。 然后我删除了原始分支并在运行 gc 之前删除了遥控器。

$ git --version
git version 1.9.4.msysgit.0

正在运行:

git reflog expire --all --expire=now
git gc --prune=now --aggressive

将文件夹降低到27M。 感谢@torek的评论建议清理 reflog!

我原以为 reflog 不是问题,因为如果我运行git reflog我只看到一个条目,我的单个提交。 为了回应@torek的建议,我发现了如何从 git 存储库中删除未使用的对象?这是我找到清除 reflog 的命令的地方。

相关内容

最新更新