【问题标题】:git submodule add taking longer timegit submodule add 需要更长的时间
【发布时间】:2018-07-28 15:50:38
【问题描述】:

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

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

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

所以通常需要 1 个多小时才能完成,谁能帮我添加特定的分支而不添加整个子模块远程 repo。

  git verison 1.8.3.1

谢谢。

【问题讨论】:

  • 我的git版本是1.8.3.1

标签: git github bitbucket git-submodules gitblit


【解决方案1】:

如果您可以升级 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,一旦完成,我将在我的分支 1 中推送我的更改,我们将 checkout 到 master 分支,在那里我们将推送所有更改

那么这是job for git worktree(Git 2.5+,所以请先升级 Git):
克隆您的 Git 存储库一次,但检查它两次,每个分支一个。
这样,您就有了两个不同的文件夹,其中有两个不同的分支已经签出。切换分支很快,更新这些分支 (git pull) 比完整结帐更快。

【讨论】:

  • 对于这种情况,我需要完整的历史来匹配以前的历史。我们在脚本中执行此操作,因此该过程需要午餐才能完成。
  • @vinoth 我已经编辑了答案以满足您的要求。
  • 实际上,我需要所有分支的完整历史记录,当我添加子模块大约需要 2 分钟,大小为 (2gb),一旦完成,我将创建我的分支 1,我将在我的分支 1 中推送我的更改一旦没问题,我们将检查到主分支,在那里我们将推送更改。 (所以这里的 master 分支大约 2 gb 也需要很长时间才能结帐 master)stackoverflow 编号 - 49187351
  • @vinoth 当然,没问题:我已经编辑了答案以满足您的要求。
猜你喜欢
  • 2022-12-08
  • 2011-11-27
  • 2010-12-31
  • 2012-04-20
  • 2015-01-23
  • 1970-01-01
  • 2022-04-28
  • 2023-04-04
  • 2015-12-22
相关资源
最近更新 更多