Git:如何重新打包所有松散的提交

时间:2011-11-28 10:01:40

标签: git garbage-collection git-gui git-commit

使用git gcgit repack(有各种选项)后,我在文件夹.git/objects中仍有4825 宽松提交。我想将所有这些内容保存在包文件中与其余包或其他包文件中一起使用。

我正在进行大量的提交重写(修改+ rebase),因此拥有许多无法访问的提交是完全正常的。我的.gitconfig包含这些参数,可以长时间保持reflogs和unreachable提交。

[gc]
    reflogExpire = 300 days
    reflogExpireUnreachable = 200 days
    pruneExpire = 90 days

你可能想知道它是否有意义,但我已经需要并已经恢复了几个月前提交的一些提交。我们在一组新的优先级更高的分支机构上开发了很多个月,之后继续在较低优先级的分支机构上继续开发。

这个问题的主要原因是git gui继续抱怨压缩我的数据库,我已多次这样做了。 如果我们无法打包这些松散的提交,那么这个“抱怨”可能是git gui中的错误。

1 个答案:

答案 0 :(得分:1)

考虑到git bundle仅用于处理打包对象(调用fetch-pack),您是否尝试to bundle,然后克隆您的回购?

git bundle create aBundle --all # hopefully package everything, 
                                # the result being *one* file.
git clone aBundle newRepo       # recreate a full repo
# check if the cloned repo contains only packaged object

如果这样可行,您可以继续使用新的克隆仓库作为主要仓库。