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

Pau*_*ijs 7 git garbage-collection git-gui git-commit

在使用git gcgit repack(有各种选项)后,我仍然在文件夹中有4825个松散的提交.git/objects.我想将所有这些文件包含在包文件中,其余包含在其他包文件中.

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

[gc]
    reflogExpire = 300 days
    reflogExpireUnreachable = 200 days
    pruneExpire = 90 days
Run Code Online (Sandbox Code Playgroud)

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

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

Von*_*onC 1

考虑到git bundle仅用于打包对象(调用fetch-pack),您是否尝试捆绑,然后克隆您的存储库?

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
Run Code Online (Sandbox Code Playgroud)

如果这有效,您可以继续使用新的克隆存储库作为您的主存储库。