git - 如何撤消"git repack -ad"?

Ror*_*ory 4 git version-control

我有一个git存储库,我已经打包git repack -a -d,这将所有对象重新打包成一个大文件.这节省了空间.但是我想撤消这个,并将那个大包文件转换为所有小对象文件.

我想这样做的原因是将git存储库备份到远程服务器.我做了备份(重新包装前).在远程服务器上安装git是非常重要的,所以我打算rsync用来复制文件.然而,rsync不是这个聪明,基本上想要再次复制东西.如果我可以"解压缩"此存储库,则可以更快地复制.

Jos*_*Lee 6

git-unpack-objects将解压缩对象,但仅限于包含该包的repo :

制作一个新的空仓库:

mkdir new-repo; cd new-repo; git init
Run Code Online (Sandbox Code Playgroud)

将对象写入:

git unpack-objects < ../old-repo/.git/objects/pack/pack-XXX.pack
Run Code Online (Sandbox Code Playgroud)

拉下必要的分支/标签:

git pull ../old-repo
Run Code Online (Sandbox Code Playgroud)

或者,如果您喜欢冒险,可以尝试使用objects目录new-repo替换旧目录.