git - update - submodule修改




使用GIT更新子模塊時出現致命錯誤 (5)

以下步驟將解決此問題。

  1. 刪除本地子模塊的文件夾。
  2. git submodule sync
  3. 然後git submodule update --init

希望這可以幫助。

我正在嘗試更新這個git repositary的子模塊,但我一直遇到致命的錯誤:

[[email protected] ProdigyView]# git submodule update --recursive
Cloning into core...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Clone of '[email protected]:ProdigyView/ProdigyView-Core.git' into submodule path 'core' failed

或者這樣

[[email protected] root]# git clone --recursive https://github.com/ProdigyView/ProdigyView.git
Cloning into ProdigyView...
remote: Counting objects: 438, done.
remote: Compressing objects: 100% (275/275), done.
remote: Total 438 (delta 172), reused 394 (delta 128)
Receiving objects: 100% (438/438), 8.03 MiB | 5.19 MiB/s, done.
Resolving deltas: 100% (172/172), done.
Submodule 'core' ([email protected]:ProdigyView/ProdigyView-Core.git) registered for path 'core'
Cloning into core...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Clone of '[email protected]:ProdigyView/ProdigyView-Core.git' into submodule path 'core' failed

有關為什麼會發生子模塊的任何想法? 回購是這個:

https://github.com/ProdigyView/ProdigyView

(如果我不嘗試將子模塊克隆為子模塊,則可以克隆子模塊。)


問題是git無法找到從服務器下載repo所需的公鑰,解決方案是使用公共URL。

在.gitmodule文件中,您將找到以下條目:

[submodule "example"]
    path = example
    url = [email protected]:webhat/example.git

需要將URL更改為模塊的公共URL:

[submodule "example"]
    path = example
    url = https://github.com/webhat/example.git

正如您所看到的,前綴git @已更改為https://並且infix 變為/

編輯: 在您自己的存儲庫中,您可能需要使用git://而不是https://

之前的答案對我來說不清楚,所以我補充說。

編輯2: 如果您發現需要運行git submodule sync或需要編輯.git/config以使其工作,您可能已經為子模塊設置了遙控器。


如果它可以幫助一些人:

我更新了我的.gitmodules

[submodule "example"]
  path = example
  url = https://github.com/webhat/example.git

然後我也更新我的.git / config

[submodule "example"]
  url = https://github.com/webhat/example.git

就像你們之前說的那樣(我感謝你)。

然後我更新我的.git / modules / example / config

[remote "origin"]
  fetch = [...]
  url = https://github.com/webhat/example.git

並完成我做

git submodule sync
git submodule init
git submodule update

弄清楚了。 .gitmodule文件中的路徑無法下載子模塊。


我有同樣的問題。 但是,在我的情況下,團隊希望使用.gitmodules中的SSH訪問,因此修改URL以使用http://不是一個選項。

最終,我的問題是有一個不正確的〜/ .ssh / config文件。 配置文件有一些錯誤的設置,所以每次我真的想訪問[email protected]時,我實際上都試圖訪問不正確的服務器。 我通過執行以下命令找到了這個:

ssh -vT [email protected]

第三行應該這樣說:

debug1: Connection to github.com [<ip address>] port <port num>

如果您沒有嘗試連接到github.com,那麼您的配置文件會指示您偏離正軌。

結果我不需要配置文件中的任何東西,所以我可以安全地刪除它。 如果你想維護一個配置文件,這裡有一篇很好的文章:

http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/

此外,這些GitHub文檔真的幫助我調試我的問題:

https://help.github.com/articles/error-permission-denied-publickey

https://help.github.com/articles/what-ip-addresses-does-github-use-that-i-should-whitelist





git-submodules