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

标签 git version-control

我有一个用 git repack -a -d 打包的 git 存储库,这将所有对象重新打包到一个大文件中。这样可以节省空间。但是我想撤消它,并将那个大包文件变成所有小目标文件。

我想这样做的原因是将 git 存储库备份到远程服务器。我做了一个备份(在重新打包之前)。在远程服务器上安装 git 很重要,所以我打算使用 rsync 来复制文件。然而 rsync 并不是那么聪明,它基本上会想要再次复制东西。如果我可以“解压”这个存储库,它可能会更快地复制。

最佳答案

git-unpack-objects将解压对象,但仅在包含该包的存储库中:

创建一个新的空仓库:

mkdir new-repo; cd new-repo; git init

将对象写入:

git unpack-objects < ../old-repo/.git/objects/pack/pack-XXX.pack

pull 入必要的分支/标签:

git pull ../old-repo

或者,如果您喜欢冒险,您可以尝试使用 new-repo 中的对象目录来替换旧目录。

关于git - 如何撤消 "git repack -ad"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052701/

相关文章:

git:如何应用有冲突的补丁?

eclipse - 如何更改 Eclipse egit merge 工具的 merge 模式?

windows - 我应该使用哪个 Windows SVN 服务器?

security - 我应该将自签名证书提交给源代码管理吗?

git - 易于使用(Gui Win)版本控制软件

git - 有没有提供 Git 信息的 Leiningen 插件?

git - Gerrit 不会 push 。错误 : No common ancestry

php - symfony2 : should bootstrap. php.cache 在 gitignore 中?

windows - 带有 Windows 中央存储库的 DVCS

Git 存储库丢失了它的远程分支?