2012-07-10 116 views
10

我坐在只允许http/https通信的代理服务器上,我可以从Github克隆存储库,但必须使用https URL和用户名/密码来获取/推送。通过https更新Git子模块

现在我的问题是关于子模块的存储库,当我执行git submodule update超时,我只能假设这是因为它的使用被阻断SSH连接。 (它甚至不会要求我在私人回购站上输入密码)

+0

这个问题还用'权限被拒绝(公钥)'的错误来解决此问题。 – BlackVegetable 2013-12-18 18:52:59

回答

19

在您的回购库根目录中的.gitmodules文件和.git/config文件中,应该为您的子模块找到一个部分。您可以在那里编辑url,以便通过https请求而不是ssh访问它。

当然,它可能已经是一个SSH网址,在这种情况下,问题可能是别的,但这是第一个检查的地方。

+0

这是非常有帮助的,但我的问题稍微复杂一点,因为我在subrepos中有subrepos。下面是我如何获得在Linux中编辑的所有正确文件: sed -i -e's/git:\/\ // http:\/\ // g'.gitmodules; 找。 -name config -type f -exec sed -i -e's/git:\/\ // http:\/\ // g'{} \; – Tristan 2015-06-04 16:02:36

+1

正如FrançoisKoessler的回答所示,在编辑''.gitmodules''后运行''git submodule sync''是这个工作的必要步骤! – 2018-03-05 16:35:27

16

编辑您的.gitmodule文件与HTTPS URL,例如:

[submodule "vendor/engines/fat_free_crm"] 
    path = vendor/engines/fat_free_crm 
    url = https://github.com/fatfreecrm/fat_free_crm.git 

然后运行git submodule sync以反映更改您.git/config文件。

现金https://stackoverflow.com/a/6632693/1273077

+1

感谢提及'git submodule sync' – MohamedEzz 2017-11-13 04:57:13