gpt4 book ai didi

git - 为什么克隆的 repo 比获取的 repo 大 10 倍?

转载 作者:太空狗 更新时间:2023-10-29 13:38:24 27 4
gpt4 key购买 nike

我们有一个大小爆炸式增长的远程仓库(1.4G 到 14G)。我们正在努力找出为什么这个 repo 的大小增加了并解决了这个问题。

在这个过程中,我们注意到 git clone 和 git fetch 之间的显着差异。

如果我们克隆repo,克隆的repo也是14G。

git clone <remote>

如果相反,我们从远程初始化并获取,则本地存储库会回到预期的 1.4G。

git init
git remote add origin <remote>
git fetch

我认为这两组命令即使不相同也应该是相似的。

这表明 clone 和 fetch 之间存在显着差异。这些命令有何不同?

我们正在寻找确定 Remote 修复的方法。

请注意,远程位于 github 企业服务器上,因此我们对远程仓库的访问权限有限。


一些额外的统计数据

$ git clone git@$REMOTE/main.git .
Initialized empty Git repository in $HOME/cloned/.git/
remote: Counting objects: 439172, done.
remote: Compressing objects: 100% (238472/238472), done.
Receiving objects: 100% (439172/439172), 13.82 GiB | 19.92 MiB/s, done.
remote: Total 439172 (delta 186192), reused 436323 (delta 183501)
Resolving deltas: 100% (186192/186192), done.

$ git fetch
remote: Counting objects: 246663, done.
remote: Compressing objects: 100% (80057/80057), done.
remote: Total 246663 (delta 159364), reused 238800 (delta 153402)
Receiving objects: 100% (246663/246663), 1.13 GiB | 12.25 MiB/s, done.
Resolving deltas: 100% (159364/159364), done.

这些是一些非常不同的数字。

最佳答案

区别在于git fetch只会从现有分支中 pull 所有提交,以及这些分支在源中可以到达的标签。

然而,一个git clone将获取所有分支和所有现有标签可访问的所有提交。这是一个细微的差异,但最有可能导致您所看到的情况。

您可以通过运行 git tag 来测试它在你的两个 repo 协议(protocol)中,看看它们是否列出了不同的标签。

如果是这样,你可以做git fetch --tags origin在你获取的只有 1.4 gig 的 repo 中,它将 pull 下所有这些额外的提交。

要“修复”此问题,您可以删除出现在克隆中但未出现在获取的存储库中的所有标签。只要确保你真的想要失去那个提交历史! git tag -d <tagname>git push :refs/tags/<tagname>对于每个不需要的标签。

关于git - 为什么克隆的 repo 比获取的 repo 大 10 倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com