将git子模块协议从git替换为http

Ale*_*exy 26 git capistrano

我从git @ ... URL添加一个子模块,以便能够在其中进行开发.现在我想部署应用程序并用git:// ...替换URL,因此它不需要对来自Capistrano的子模块的repo进行身份验证.是否完全在.gitmodules中编辑URL来完成此操作?

Chr*_*sen 52

编辑.gitmodules文件(然后提交并推送)将适用于任何克隆.

另外,当初始化子模块(例如git submodule init …,git submodule update --init …git clone --recursive …等)时,其URL被从.gitmodules文件复制到存储库的.git/config文件.

因此,如果您有任何现有的 "部署克隆"(您现在想要通过git://…URL 访问子模块的那些),您还必须更新其中的URL .git/config.您可以使用git submodule sync自动将子模块URL从当前.gitmodules文件复制到您的.git/config文件(即,一旦您提取了更新.gitmodules文件的提交).

子模块URL .git/config通常不会自动更新,因为在某些情况下您只想覆盖URL.具体来说,您通常希望git@…在存储库中使用URL .git/config(因此可以推送SSH),但是将git://…URL放入.gitmodules(以便普通公众不需要进行基于SSH的身份验证).