git子模块更新与其他用户

Jon*_*röm 23 git username git-config git-submodules

我在我的机器上以用户A身份登录,但我的回购可以通过我从中提取的服务器上的用户名B访问.该.gitmodules文件有url = ssh://domain.com/abc/def.git.

我该如何配置git以使用用户名B而不是A git submodule update

Mar*_*air 31

我假设子模块已经初始化,所以git config --list | grep ^submodule显示类似的东西submodule.my-submodule.url=ssh://domain.com/abc/def.git.

如果您还没有git submodule update第一次运行,那么您可以更改该配置选项,例如:

git config submodule.my-submodule.url ssh://B@domain.com/abc/def.git
Run Code Online (Sandbox Code Playgroud)

另一方面,如果子模块已经更新一次,那么origin在子模块中将被设置为指定的配置选项.在这种情况下,您需要做:

cd my-submodule
git config remote.origin.url ssh://B@domain.com/abc/def.git
Run Code Online (Sandbox Code Playgroud)

我担心这只是有点混乱,但子模块非常灵活.我试图在博客文章中解释其中的一些细节.


小智 14

虽然上述解决方案有效,但我找到了一个更符合我需求的不同解决方案,也许是最初的请求者.我想要一种方法来为远程服务器上的所有git操作指定默认用户名,而不必修改每个项目的git配置.解决方案根本没有与git有任何关系,而是与ssh有关.

只需将这些行添加到〜/ .ssh/config:

Host domain.com
User B
Run Code Online (Sandbox Code Playgroud)

(将domain.com替换为您的git服务器的域.)现在,即使您以用户A的身份登录到本地计算机,SSH也会在连接到服务器时使用B作为用户名.

现在您git submodule update无需在git配置中添加用户名即可运行.

  • 这是一个更好的解决方案,特别是如果您有一个包含多个子模块的项目。谢谢! (2认同)