如何对 git 个子模块使用相同的协议?
How to use same protocol for git submodules?
在 git 存储库 R 中,我有一个使用以下命令初始化的子模块:
git submodule add git@mygitserver...
现在用户刚刚使用 https
克隆了 R 并在 运行
时收到错误
git submodule init
git submodule update
因为他没有 ssh(使用 public 密钥上传到服务器)访问权限。
所以我的问题是,是否可以创建一个子模块,该子模块将自动使用与用于在 git submodule update
命令上克隆父存储库的协议相同的协议?
该用户可以设置配置:
git config --global url.https://mygitserver/.insteadOf ssh://git@mygitserver/
# or possibly (to be tested)
git config --global url.https://mygitserver/.insteadOf git@mygitserver/
这样,mygitserver(主仓库或子模块)将始终使用 https 网址,而不是 ssh 网址。
我没有详细测试(只有一些情况),但似乎如果你的 .gitmodules
文件使用相对 url 并且如果 repo 总是通过 "full url" 克隆,那么事情应该工作:
.gitmodules
:
[submodule "same_users"]
path = same_users
url = ../something.git
[submodule "other_user"]
path = same_users
url = ../../different-user/something.git
# Maybe even this?
[submodule "other_server"]
path = same_users
url = //git@gitlab.com/joe_r_user/hacks.git
克隆:
git clone ssh://git@github.com/user/repo.git ./ssh
cd ssh
git submodule update --init --recursive
但是如果用户选择 clone git@github.com:user/repo.git
(注意 :
),update
将不起作用。
在 git 存储库 R 中,我有一个使用以下命令初始化的子模块:
git submodule add git@mygitserver...
现在用户刚刚使用 https
克隆了 R 并在 运行
git submodule init
git submodule update
因为他没有 ssh(使用 public 密钥上传到服务器)访问权限。
所以我的问题是,是否可以创建一个子模块,该子模块将自动使用与用于在 git submodule update
命令上克隆父存储库的协议相同的协议?
该用户可以设置配置:
git config --global url.https://mygitserver/.insteadOf ssh://git@mygitserver/
# or possibly (to be tested)
git config --global url.https://mygitserver/.insteadOf git@mygitserver/
这样,mygitserver(主仓库或子模块)将始终使用 https 网址,而不是 ssh 网址。
我没有详细测试(只有一些情况),但似乎如果你的 .gitmodules
文件使用相对 url 并且如果 repo 总是通过 "full url" 克隆,那么事情应该工作:
.gitmodules
:
[submodule "same_users"]
path = same_users
url = ../something.git
[submodule "other_user"]
path = same_users
url = ../../different-user/something.git
# Maybe even this?
[submodule "other_server"]
path = same_users
url = //git@gitlab.com/joe_r_user/hacks.git
克隆:
git clone ssh://git@github.com/user/repo.git ./ssh
cd ssh
git submodule update --init --recursive
但是如果用户选择 clone git@github.com:user/repo.git
(注意 :
),update
将不起作用。