首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git子模块URL不包括用户名?

Git子模块URL不包括用户名?
EN

Stack Overflow用户
提问于 2011-10-10 22:33:29
回答 9查看 46.2K关注 0票数 56

我有一个带有几个子模块的git存储库,它创建了一个.gitmodules文件,它是父存储库中的一个跟踪文件。然而,还有其他开发人员想要在这个存储库上工作,并签出子模块。但是目前远程子模块存储库的URL包含我的用户名;在.gitmodules文件中,它类似于:

代码语言:javascript
复制
[submodule foo]
  path = sub/foo
  url = https://myuser@example.com/git/foo.git

显然,其他开发人员不能作为myuserexample.com获取(他们没有我的密码);我如何才能拥有一个多个开发人员可以拉/推到的主存储库,并允许他们对子模块拥有单独的访问权(在子模块主机服务器上设置一个他们都共享的用户名是可行的,但不是很好的用户管理)?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-10-10 22:51:13

如果我理解正确的话,您正在使用HTTPS上的HTTP基本身份验证,以便只允许特定的开发人员访问存储库。在这种情况下,您可以提交如下所示的.gitmodules

代码语言:javascript
复制
[submodule foo]
  path = sub/foo
  url = https://example.com/git/foo.git

..。即没有用户名,然后告诉每个开发人员将他们的用户名和密码放在他们的~/.netrc文件中。(如果你使用的是Windows,那么就有some good advice on that here。)一个简单的.netrc文件可能如下所示:

代码语言:javascript
复制
machine example.com
  login myusername
  password areamandyingtotellsomeonehiscoolpassword

更新:一种不涉及使用.netrc__的替代方案如下:

同样,从.gitmodules中的URL中删除用户名,并提交并推送该更改。当有人克隆存储库时,他们会首先运行:

代码语言:javascript
复制
git submodule init

..。这会将配置选项submodule.sub/foo.url设置为.gitmodules中的URL。但是,在您执行git submodule update之前,init步骤不会将子模块克隆到适当的位置,因此您可以这样做:

代码语言:javascript
复制
git config submodule.sub/foo.url https://myuser:mypass@example.com/git/foo.git

..。然后:

代码语言:javascript
复制
git submodule update

克隆具有正确用户名的子模块。请注意,用于HTTP身份验证的用户名和密码将存储在您的git配置中。

票数 42
EN

Stack Overflow用户

发布于 2011-11-25 22:27:06

实际上,您可以在.gitconfig中指定一个子模块的“相对”路径:

代码语言:javascript
复制
[submodule foo]  
path = sub/foo  
url = ./git/foo.git

此url将引用与存储库本身相同的主机(https://example.com)。

票数 31
EN

Stack Overflow用户

发布于 2016-03-15 20:55:08

这个线程对我很有帮助,但我要补充的是,在你修改了.gitmodules文件的内容之后,你需要执行下面的命令,这样git就会拿起它:

代码语言:javascript
复制
git submodule sync
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7714326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档