我可以将 git 子模块与某种后备 URL 链接起来吗?如果 SSH 克隆失败,git 应该可以使用 https 进行克隆
Posted
技术标签:
【中文标题】我可以将 git 子模块与某种后备 URL 链接起来吗?如果 SSH 克隆失败,git 应该可以使用 https 进行克隆【英文标题】:Can I link git submodules with some kind of fallback URL? If SSH clone fails, git should be able to clone using https 【发布时间】:2017-03-18 22:22:43 【问题描述】:(这主要是在我使用 GitHub 时突然出现的,所以我不太介意是否有任何解决方案是 GitHub 特定的。但问题本身不是 GitHub 特定的,并且不需要任何解决方案'不一定都是。)
您始终可以使用 https 克隆公共 GitHub 存储库:
git clone https://github.com/my-user-name/SDL-mirror
如果您有 GitHub 知道的 SSH 密钥,您还可以使用 SSH 克隆存储库:
git clone git@github.com:my-user-name/SDL-mirror.git
(我认为使用 Bitbucket 时也适用类似的选项。)
添加子模块时也有这两个选项。
添加子模块时,您通常会添加 SSH 版本,因此您可以在现场测试更改后直接从子模块提交。
但是那些试图克隆你的仓库的人呢?他们可能没有 SSH 访问 GitHub。因此,他们将使用 HTTPS URL 克隆您的存储库......然后在 Git 尝试使用 SSH URL 克隆子模块时解开。
如果您使用 Git 存储库进行系统配置,这也可能是一个问题。
理想情况下,如果可能,我希望 Git 从 SSH URL 中提取,如果不是,则从 HTTPS URL 中提取。这应该让每个人都能开箱即用。有什么办法可以让它做到这一点?
【问题讨论】:
【参考方案1】:你可以做的是:
使用 https url (or change its current ssh url to an https one) 注册您的子模块本地指导Git to use ssh instead:
git config --global url.ssh://git@github.com/.insteadOf https://github.com/
这样,对于您的本地 repo,您始终使用 ssh,但对于任何克隆您的 repo 的人,只有 https 引用。
【讨论】:
以上是关于我可以将 git 子模块与某种后备 URL 链接起来吗?如果 SSH 克隆失败,git 应该可以使用 https 进行克隆的主要内容,如果未能解决你的问题,请参考以下文章
如何将 git 子模块与 Bitbucket 管道一起使用?
git submodule add子模块的添加,--recurse-submodules递归克隆子项目
git submodule add子模块的添加,--recurse-submodules递归克隆子项目