在git仓库R中,我有一个用以下命令初始化的子模块:
git submodule add git@mygitserver...
现在,用户刚刚使用https
克隆了R并在运行时出现错误
git submodule init
git submodule update
因为他没有ssh(在服务器上上传了公共密钥)访问权限。所以我的问题是,是否有可能创建一个子模块,该子模块将自动使用与用于克隆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/
这样,https url将始终用于mygitserver(主存储库或子模块),而不是ssh。
.gitmodules
文件使用相对url,并且如果回购协议总是通过“完整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 = //[email protected]/joe_r_user/hacks.git
克隆:
git clone ssh://[email protected]/user/repo.git ./ssh cd ssh git submodule update --init --recursive
但是,如果用户选择clone [email protected]:user/repo.git
(注意:
),则update
将不起作用。