git global user.name仅适用于某些存储库

时间:2017-05-19 13:07:38

标签: git gitlab

情况就是这样。

我有一些git repositorys。假设存储库A和B都在gitlab.com上托管

我已经做过了

git config --global user.name "MyCorrectUserName"

我看,它有效:

git config --global --list
user.name=MyCorrectUserName
user.email=my@gitlabmail.com
credential.helper=/usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

在存储库A中我做了一些提交等等,然后执行git push origin master它要求输入我的密码(所以它知道我的用户名。太棒了!)

在存储库B中,我也这样做,并要求我输入用户名。好。

存储库A/.git/config中的

我看到了

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = https://MyCorrectUserName@gitlab.com/MyCorrectUserName/A.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
存储库B/.git/config中的

我看到了

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = https://gitlab.com/MyCorrectUserName/B
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[user]
    name = MyCorrectUserName

我试过

编辑:

我尝试更改B存储库的配置,因为它在A(username@gitlab.com)中。它不起作用。

如何让git在任何地方都记住我的用户名?

2 个答案:

答案 0 :(得分:1)

@Lassy在第一条评论中是对的。 这与配置中url块的[remote "origin"]参数有关。

在存储库 A 上,您的用户名位于网址中,而不在 B 上。 特别注意这里的url,你的A存储库显示“https:// MyCorrectUserName @ ..”,而你的B存储库则没有。

您可以通过以下方式更正存储库 B url参数:

git remote set-url origin https://MyCorrectUserName@gitlab.com/MyCorrectUserName/B

您还可以编辑存储库 B .git/config文件,并按上述方式添加您的用户名。

此外,您可能更喜欢注册SSH密钥并使用ssh协议代替http,如here所述。由于使用密钥,您不必再处理用户名。

答案 1 :(得分:-2)

比使用git的全局用户名更好的解决方案是使用gnome-keyring来记住我的凭据。

我已经安装并设置了gnome-keyring以使用git(如此处所述https://stackoverflow.com/a/13390889/2867993)但它只在我与显示管理器(我现在使用lightdm)启动x会话时才开始工作startx