GIT迁移回购比原来小

Del*_*lta 5 git gitlab

我有一个存储在文件系统上的存储库,我需要将其迁移到HTTPS git存储库.问题是迁移的repo比原来的小,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    .
Run Code Online (Sandbox Code Playgroud)

这是我遵循的迁移过程:

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

然后,如果我看看最终的回购大小,那就是179MB.

知道这里发生了什么吗?

谢谢.

pok*_*oke 11

存储在克隆存储库中的信息在克隆实际启动之前打包.这样,它完全压缩并保持小尺寸,同时包含原始存储库的所有信息.

然而,原始存储库可能会随着时间的推移而发展,因此它可能是碎片化的,无法有效地打包.也许它根本没有完全包装,但包含仍然未经优化的对象,甚至不再可达的对象.

您可以尝试git gc在原始存储库上使用(或其中一个更具攻击性的选项)以查看是否可以进一步缩小它.

但最重要的是,如果克隆过程完成且没有错误,则克隆的存储库将包含原始存储库的所有信息.也就是说,将包括使用分支或标记可到达的每个提交及其数据.所以你不必担心它.