GIT 迁移后的 repo 比原来的要小得多

标签 git gitlab

我在文件系统上存储了一个存储库,我需要将其迁移到 HTTPS git 存储库。问题是迁移后的存储库比原始存储库小,准确地说是 179M 对 545 MB。

这是原始仓库的样子:

$ tree -L 2 .git

.git/
├── branches
├── config
├── FETCH_HEAD
├── HEAD
├── hooks
├── index
├── logs
│   └── refs
├── objects
│   ├── incoming_1638816568970138516.pack
│   ├── incoming_2231423675192085195.pack
│   ├── incoming_252567842603709439.pack
│   ├── incoming_2956015230264054740.pack
│   ├── incoming_3048626775278812485.pack
│   ├── incoming_3322152774343971530.pack
│   ├── incoming_3707332777993276763.pack
│   ├── incoming_407171399829023385.pack
│   ├── incoming_4072000993266381297.pack
│   ├── incoming_4293432441900999175.pack
│   ├── incoming_4833572675284287989.pack
│   ├── incoming_4943537936436869872.pack
│   ├── incoming_5555086829860720971.pack
│   ├── incoming_5912835395946639495.pack
│   ├── incoming_7273182803237175093.pack
│   ├── incoming_7510898138918506599.pack
│   ├── incoming_7865231230366160752.pack
│   ├── incoming_8724975206375007218.pack
│   ├── incoming_8787762604831244623.pack
│   ├── incoming_9046531469688239004.pack
│   ├── info
│   └── pack
└── refs
    ├── heads
    ├── remotes
    └── tags


$ git branch -a

  cli
  max
  codefactoring
* master
  new-load-configuration
  new-loader
  plugins_dev
  remotes/origin/cli
  remotes/origin/max
  remotes/origin/codefactoring
  remotes/origin/master

$ du -sh .
545M    .

这是我遵循的迁移过程:

$ mkdir temp_dir && cd temp_dir
$ git clone --mirror /path/to/original/repo
$ cd /path/to/original/repo
$ git remote add new-origin  https://myuser@my.source.server/myuser/repo.git
$ git push new-origin --mirror

然后,如果我查看生成的存储库大小,它是 179MB。

知道这里发生了什么吗?

谢谢。

最佳答案

存储在克隆存储库中的信息在克隆实际开始之前被打包。这样一来,它就得到了完美压缩并保持较小的尺寸,同时包含原始存储库的所有信息

然而,原始存储库可能会随着时间的推移而演变,因此它可能是零散的,无法高效打包。也许它根本没有完全打包,但仍包含未优化的对象,甚至不再可达的对象。

您可以尝试在原始存储库上使用 git gc(或其更激进的选项之一),看看是否可以进一步缩小它。

但最重要的是,如果克隆过程没有错误地完成,那么克隆的存储库将包含原始存储库的所有信息。也就是说,将包含使用分支或标签可访问的每个提交及其数据。所以您不必担心。

关于GIT 迁移后的 repo 比原来的要小得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768638/

相关文章:

git - VS Code Git 干净恢复

javascript - 通过 Gitlab 部署到 Firebase 来自动化 vue.js 应用程序

git - 如何将支持 LFS 的存储库移动到 gitlab.com?

git - 无法使用 SSH 将 IntelliJ-IDEA 连接到 GitLab

git-过滤器分支 : leave directory structure unchanged

混帐 1.8 : it push error: dst ref refs/heads/master receives from more than one src

maven - 在基于 docker 的 GitLab CI 设置中为 maven 存储 settings.xml 的位置

Git:前面和后面在一起。怎么解决?

continuous-integration - Gitlab Hook 打开合并请求

git - 错误: RPC failed; HTTP 502 curl 22 The requested URL returned error: 502 Bad Gateway fatal