git子模块的不同推/拉网址

the*_*oom 8 git git-submodules gitlab

我在一个大型项目中使用git superproject模式,该项目由没有存储库帐户的Teamcity构建代理部署,但是存储库设置为允许匿名克隆.出于这个原因,我已经使用他们的http://url而不是他们的git url 设置了子模块.这个问题是存储库拒绝http推送:

Total 0 (delta 0), reused 0 (delta 0)
error: RPC failed; result=22, HTTP code = 401
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

所以每次我在切换分支时更新子模块,我都要做一个git remote add-url --push添加git://网址.

有没有办法在超级项目中设置子模块,以便他们已经使用http://url进行提取和git://推送网址?

Von*_*onC 6

LibreOffice的项目还采用子模块,包括:

默认情况下,子模块存储库处于称为"分离的HEAD"的状态,这意味着提交签出 - 超级项目(核心)所需的 - 不与本地分支名称相关联.

不要忘记为正在处理的子模块添加正确的pushurl,否则您将无法提交.

$ editor .git/modules/submodule/config
Run Code Online (Sandbox Code Playgroud)

并在该部分[remote "origin"]添加:

pushurl = ssh://logerrit/submodule
Run Code Online (Sandbox Code Playgroud)

(类似于soulseekah评论)(在你的情况下,使用git://地址)

您也可以通过(在子模块内)完成

git config remote.origin.pushurl git://...
Run Code Online (Sandbox Code Playgroud)

如果不这样做,因为在illulstrated 这个项目,你会得到一个:

fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)