【问题标题】:SSH not working for public repos in submodules for GitHubSSH 不适用于 GitHub 子模块中的公共存储库
【发布时间】:2021-07-05 17:36:10
【问题描述】:

我有一个公共子模块:

[submodule "submodules/quickstart-microsoft-utilities"]
    path = submodules/quickstart-microsoft-utilities
    url = git@github.com:aws-quickstart/quickstart-microsoft-utilities.git

它不会初始化或产生任何错误。我在 Github 中有密钥,但这是公开的。引用 git 子模块的主仓库是私有的,但可以很好地克隆。将其更改为 https 工作正常:

[submodule "submodules/quickstart-microsoft-utilities"]
    path = submodules/quickstart-microsoft-utilities
    url = https://aws-quickstart/quickstart-microsoft-utilities.git

通过 SSH 在子模块外部的这个公共 repo 上进行克隆工作正常:

git clone git@github.com:aws-quickstart/quickstart-microsoft-utilities.git

什么给了?

【问题讨论】:

  • 让子模块的用户决定如何克隆或包含它。我通常使用 https 进行匿名克隆。
  • 阅读您的问题,我不清楚您看到的是哪种错误。但一般来说,将供公众使用的子模块配置为使用https://,如果你想使用ssh在本地克隆它们,请在你的全局git配置中配置一些url.*.insteadof选项。
  • 我没有看到任何错误,它只是默默地失败了。我认为这是一个 git 设置,但我将其保留为 https

标签: git github ssh


【解决方案1】:

首先,确保您的 HTTPS 包含 github.com,否则它也不起作用。

第二次尝试(使用最新的 Git 版本)a

git config -l --show-scope --show-origin | grep -i insteadof

检查是否有任何设置会以其他方式静默替换您的 SSH URL。

关于(静默)错误,请尝试和git clone --recurse-submodules 跟踪。
你有since Git 2.25 the variable GIT_TRACE2git fetch has been instrumented to emit traces

 # Windows
 set GIT_TRACE2_EVENT=1

 # Linux
 export GIT_TRACE2_EVENT=1

 # run git clone

【讨论】:

    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 2020-11-09
    • 2017-07-29
    • 2021-04-30
    • 1970-01-01
    • 2012-04-21
    • 2020-02-13
    • 2014-09-09
    相关资源
    最近更新 更多