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

时间:2011-07-08 23:44:51

标签: git capistrano

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

2 个答案:

答案 0 :(得分:52)

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

此外,当初始化子模块(例如git submodule init …git submodule update --init …git clone --recursive …等)时,其URL将从.gitmodules文件复制到存储库{ {1}}档案。

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

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

答案 1 :(得分:0)

我遇到了类似的问题,在谷歌搜索之后,我偶然发现了这篇文章:Relative URL for Git submodule。我发现这是一个很好的做法,因为无论谁检查它都不需要手动更改mBinding.includeLayoutDrawer.home.setOnClickListener(view -> { if (getFragment() instanceof HomeFragment) { //already has } else { Utils.replaceFragmentInActivity(getSupportFragmentManager(), HomeFragment.newInstance(), R.id.contentFrame, false); } closeDrawer(); }); mBinding.includeLayoutDrawer.myProfile.setOnClickListener(view -> { mBinding.includeLayoutDrawer.menu.setVisibility(View.GONE); mBinding.includeLayoutDrawer.subMenu.setVisibility(View.VISIBLE); }); mBinding.includeLayoutDrawer.back.setOnClickListener(view -> { mBinding.includeLayoutDrawer.menu.setVisibility(View.VISIBLE); mBinding.includeLayoutDrawer.subMenu.setVisibility(View.GONE); }); 文件。它也可能适用于您的情况。