git submodule添加需要更长的时间

时间:2018-02-18 05:25:42

标签: git github bitbucket git-submodules gitblit

我的子模块库大于2 GB。每当我将子模块添加到我的localrepo时,它就会克隆整个submoudle远程存储库。

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

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

所以通常需要花费1个多小时才能完成任何人帮助我添加特定分支而不添加整个子模块远程仓库。

  git verison 1.8.3.1

感谢。

1 个答案:

答案 0 :(得分:0)

如果您可以升级Git(至少1.8.4,但最好是2.16.2),您可以从shallow clone submodule中受益:这将避免克隆完整历史记录

git submodule add --depth 1 -- repository path

OP补充道:

  

对于这种情况,我需要完整的历史记录以匹配以前的历史记录   我们在脚本中这样做,所以这个过程正在吃午饭才能完成。

由于有--single-branch option to git clone,您可以分两步添加子模块,seen here

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回购 通过添加--depth 1,您将获得该分支的完整历史记录。

OP细节:

  

实际上在这里,我需要所有分支的完整历史记录,当我添加大约2分钟的子模块大小为(2gb)并且我将创建我的branch1一旦完成我将在branch1中推送我的更改好的,我们将结帐到主分支机构,在那里我们将完全推动变更

然后这是job for git worktree(Git 2.5+,首先升级Git):
克隆你的Git仓库一次,但结帐两次,每个分支一个 这样,您有两个不同的文件夹,其中两个不同的分支已经签出。切换分支非常快,更新这些分支(git pull)比完全结账更快。