开发者

git submodule update with other user

开发者 https://www.devze.com 2023-03-06 12:43 出处:网络
I\'m logged in as user A on my machine, but my r开发者_开发知识库epo is accessible through username B on the server that I pull from. The .gitmodules file has url = ssh://domain.com/abc/def.git.

I'm logged in as user A on my machine, but my r开发者_开发知识库epo is accessible through username B on the server that I pull from. The .gitmodules file has url = ssh://domain.com/abc/def.git.

How can I configure git to use a username B instead of A when I do git submodule update?


I assume that the submodule has already been initialized, so git config --list | grep ^submodule shows something like submodule.my-submodule.url=ssh://domain.com/abc/def.git.

If you haven't yet run git submodule update for the first time, then you can just change that config option, e.g. with:

git config submodule.my-submodule.url ssh://B@domain.com/abc/def.git

On the other hand, if the submodule has already been updated once, then origin in the submodule will have been set to whatever that config option specified. In that case, you'll need to do:

cd my-submodule
git config remote.origin.url ssh://B@domain.com/abc/def.git

It's just a bit confusing, I'm afraid, but submodules are very flexible. I made an attempt to explain some of these details in a blog post.


While the above solution works, I found a different solution that better suits my needs, and maybe the original requester's. I wanted a way to specify the default username for all git operations on a remote server instead of having to modify the git configs for each project. The solution doesn't really have anything to do with git at all, but ssh.

Simply add these lines to your ~/.ssh/config:

Host domain.com
User B

(replace domain.com with the domain of your git server.) Now, even if you are logged in to your local machine as user A, SSH will use B as the username when connecting to the server.

Now you can run git submodule update without having to add a username in the git config.


The short answer is 'check if you could use relative paths for submodules'

The detail is, We have submodule that is being used by multiple apps. We have kept the submodule in the same repo.

The structure is like this, repo

|-app1
|-app2
|-submod

When we clone the app the app/.git/config gets url with current user like 'userA@repo.com' In the .gitmodules of apps we give url as '../submod' By this way, when we do 'submodule init', git generates absolute url for submodule from the relative url we gave in .gitmodules.

0

精彩评论

暂无评论...
验证码 换一张
取 消