git submodule add 命令耗时较长

3

我的子模块库超过了2 GB。每当我将子模块添加到本地库时,它就会克隆整个子模块远程库。

git submodule add -f -b localbranch https://mygitserversuperprojecturl/server.git .submodule/server_git

结果:克隆到 'submodule/server_git'...

通常需要超过1个小时才能完成,有没有人能帮忙添加特定的分支而不必添加整个子模块远程仓库。

  git verison 1.8.3.1

谢谢。

我的 Git 版本是 1.8.3.1。 - Vinoth
1个回答

0
如果您可以升级Git(至少到1.8.4,但最好是2.16.2),那么您可以从浅克隆子模块中受益:这将避免克隆完整的历史记录。
git submodule add --depth 1 -- repository path

楼主补充道:

对于这种情况,我需要完整的历史记录来匹配之前的历史记录。
我们正在使用脚本进行此操作,因此该过程需要很长时间才能完成。

由于 --single-branch 选项可用于 git clone, 您可以按照 此处所示 的两个步骤添加您的子模块:

git clone -b myBranch --single-branch https://mygitserversuperprojecturl/server.git .submodule/server_git
git submodule add -b myBranch  https://mygitserversuperprojecturl/server.git .submodule/server_git

只克隆myBranch,您不会克隆完整的2GB repo。
如果不添加--depth 1,则会获取该分支的完整历史记录。

OP详细说明:

实际上,在这里,我需要所有分支的完整历史记录,当我添加子模块时,大约需要2分钟,大小为(2gb),然后我将创建我的branch1,一旦完成,我将在我的branch1中推送更改,一切正常后,我们将切换到主分支,然后在那里推送更改

那么这是一个{{link1:git worktree的工作}}(Git 2.5+,因此请先升级Git):
克隆您的Git repo一次,但是检出两次,每个分支一个。
这样,您就有了两个不同的文件夹,其中包含两个不同的分支已经检出。 切换分支非常快,并且更新这些分支(git pull)比完全检出要快。


对于这种情况,我需要完整的历史记录来匹配先前的历史记录。我们正在使用脚本进行此操作,因此该过程需要很长时间才能完成。 - Vinoth
@vinoth 我已经编辑了答案以满足您的要求。 - VonC
实际上,在这里,我需要所有分支的完整历史记录。当我添加子模块时,需要大约2分钟,大小为(2GB)。一旦完成,我将创建我的branch1,然后将更改推送到我的branch1。一切都好后,我们将切换到主分支并在那里推送更改。所以主分支也大约有2GB,检出主分支也需要很长时间。stackoverflow编号-49187351 - Vinoth
@vinoth 没问题:我已经编辑了答案以满足您的要求。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接