我在我的机器上以用户 A 的身份登录,但我的仓库可以通过我从中提取的服务器上的用户名 B 访问。该.gitmodules
文件有url = ssh://domain.com/abc/def.git
.
当我这样做时,如何将 git 配置为使用用户名 B 而不是 A git submodule update
?
我在我的机器上以用户 A 的身份登录,但我的仓库可以通过我从中提取的服务器上的用户名 B 访问。该.gitmodules
文件有url = ssh://domain.com/abc/def.git
.
当我这样做时,如何将 git 配置为使用用户名 B 而不是 A git submodule update
?
我假设子模块已经初始化,所以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
另一方面,如果子模块已经更新过一次,那么origin
在子模块中将被设置为该配置选项指定的任何内容。在这种情况下,您需要执行以下操作:
cd my-submodule
git config remote.origin.url ssh://B@domain.com/abc/def.git
恐怕这有点令人困惑,但子模块非常灵活。我试图在一篇博文中解释其中的一些细节。
虽然上述解决方案有效,但我找到了一个更适合我需要的不同解决方案,也许是原始请求者的。我想要一种方法来为远程服务器上的所有 git 操作指定默认用户名,而不必为每个项目修改 git 配置。该解决方案与 git 根本没有任何关系,而是 ssh。
只需将这些行添加到您的 ~/.ssh/config 中:
Host domain.com
User B
(将 domain.com 替换为您的 git 服务器的域。)现在,即使您以用户 A 登录到本地计算机,SSH 在连接服务器时也会使用 B 作为用户名。
现在您git submodule update
无需在 git 配置中添加用户名即可运行。
简短的回答是“检查是否可以使用子模块的相对路径”
细节是,我们有多个应用程序正在使用的子模块。我们将子模块保存在同一个仓库中。
结构是这样的,repo
|-app1 |-app2 |-子模块
当我们克隆应用程序时,app/.git/config 会使用当前用户获取 url,例如 'userA@repo.com' 在应用程序的 .gitmodules 中,我们将 url 作为 '../submod' 通过这种方式,当我们执行 'submodule init',git 从我们在 .gitmodules 中给出的相对 url 生成子模块的绝对 url。