关键user.name Git的多个值

时间:2010-11-30 06:01:41

标签: git github

出于某种原因,当我尝试为我的git帐户设置user.name时,我收到“key user.name的多个值”的错误。如何将其设置为单个名称?

8 个答案:

答案 0 :(得分:98)

如果你只想重置所有这些:

git config --global --replace-all user.email "new@mail.com"

答案 1 :(得分:42)

更新(2012年12月)

git1.8.1rc1现在运作方式不同:

“git config --get”用于诊断同一个配置文件中同一个变量的多个定义是否存在错误,但是它现在应用了内部配置逻辑使用的“last one wins”规则即可。

  

严格地说,这可能是一个API回归,但预计在实践中没有人会注意到它。


原始答案(2010年11月)

git config手册页提到:

  

变量名称不区分大小写,只允许使用字母数字字符和 -   给定变量可以有多个值;我们说那个变量是多值的

实际上,此类配置设置(具有多个可能的值)称为多变量

正如Jefromi建议的那样,请参阅3个配置文件中的哪一个,您有多条user.name行。
您可以像这样查询多个值:

git config --local  --get-all user.name #local repo git config file)
git config --global --get-all user.name #user config file)
git config --system --get-all user.name #system git config file)

需要修复一个回答多个user.name值的配置文件。


来自评论:

  

检查文件“本地”,“全局”和“设置”我在全局中只能看到一个user.name。   但git config --listgit config --get-all user.name给了我两次

正如我在here with Git 2.8 (March 2016)中提到的,您可以使用(查看所有设置:

git config -l --show-origin

您可以看到重复设置(本地,全局,系统)的位置,您可以使用git config [--local/--global/--system] --replace-all key value,就像mb21answer一样。

答案 2 :(得分:12)

您应该检查有问题的存储库中的~/.gitconfig(您的用户全局配置)以及.git/config的内容(特定于repo的配置)。您应该会在其中一个name部分下看到两条user行。 (它也可能是一个文件中的两个独立的用户部分。)只需删除你不想要的那个,你应该好好去。

如果你想让它成为一个全局设置(可能就是这种情况),你可以直接用git config --global user.name "Desired name"设置它,或者对于一个特定于repo的设置减去--global - 但它可能是最好检查文件并找到自己的罪魁祸首,以确保你知道你有什么。特定于回购的那个将覆盖全局的一个。理想情况下,您应该全局设置您的名称,并且只在项目中覆盖它是有充分理由的。

答案 3 :(得分:7)

您可以手动更改/编辑github的用户名和电子邮件

转到您的应用程序目录

查看所有隐藏文件...转到.git隐藏文件夹

打开文件配置文件

它会显示一些像

这样的行
[user]
    name = =
    name = =
    email = =

替换这些行
[user]
    name = username
    email = user@test.com

答案 4 :(得分:5)

首先看一下配置中的user.names:

git config --list

示例输出:

user.email=abarker@cern.ch
user.name=fiveisgreen
user.github=fiveisgreen
user.name=Anthony

在此示例中,user.name列出两次。要删除副本,请执行以下操作:

git config --global --unset user.name

答案 5 :(得分:4)

要调试这些内容,您可以使用以下命令:

git config --list --show-origin

显示每个配置条目的原始文件 包含重复的core.autocrlf和不需要的C:\\ProgramData/Git/config文件的示例输出:

$ git config --list --show-origin
file:"C:\\ProgramData/Git/config"       core.symlinks=false
file:"C:\\ProgramData/Git/config"       core.autocrlf=true
file:"C:\\ProgramData/Git/config"       core.fscache=true
file:"C:\\ProgramData/Git/config"       color.diff=auto
file:"C:\\ProgramData/Git/config"       color.status=auto
file:"C:\\ProgramData/Git/config"       color.branch=auto
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    diff.astextplain.textconv=astextplain
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    filter.lfs.clean=git-lfs clean -- %f
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    filter.lfs.smudge=git-lfs smudge -- %f
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    filter.lfs.required=true
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    filter.lfs.process=git-lfs filter-process
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    credential.helper=manager
file:C:/Users/john.doe/.gitconfig   user.name=John Doe
file:C:/Users/john.doe/.gitconfig   user.email=john.doe@somemail.com
file:C:/Users/john.doe/.gitconfig   core.preloadindex=true
file:C:/Users/john.doe/.gitconfig   core.fscache=true
file:C:/Users/john.doe/.gitconfig   core.autocrlf=input
file:C:/Users/john.doe/.gitconfig   gc.auto=256
file:.git/config        core.filemode=false
file:.git/config        core.bare=false
file:.git/config        core.logallrefupdates=true
file:.git/config        core.symlinks=false
file:.git/config        core.ignorecase=true
file:.git/config        core.autocrlf=input

您可以使用--system--global执行相同操作来检查gitconfig文件的位置:

git config --global --list --show-origin

示例输出:

file:C:/Users/john.doe/.gitconfig   user.name=John Doe
file:C:/Users/john.doe/.gitconfig   user.email=john.doe@somemail.com
file:C:/Users/john.doe/.gitconfig   core.preloadindex=true
file:C:/Users/john.doe/.gitconfig   core.fscache=true
file:C:/Users/john.doe/.gitconfig   core.autocrlf=input
file:C:/Users/john.doe/.gitconfig   gc.auto=256

答案 6 :(得分:2)

这个帖子给了我很多帮助。以下是我在全局配置设置中解决重复键条目的操作。 Windows 7.我搜索了一个名为.gitconfig的文件,该文件位于我系统上的/ users / owner中。我用文本编辑器(Atom)编辑了它并删除了有问题的行。

我相信当我在使用git config命令时无意中将我的电子邮件地址括在引号中时,设置了重复键,至少这是我的shell日志所指示的。哎呀!

答案 7 :(得分:0)

在 git config 中显示/替换/删除/添加密钥

首先检查您的配置

git config --list

然后,如果您有多个针对键的值,那么您必须

#git config --replace-all git_key_name git_key_value
# real example
git config --replace-all credential.helper store

一旦一个键只有一个值,该键也可以被删除

#git config --unset git_key_name
# real example
#git config --unset credential.helper

您可以在任何时候再次添加任何键或只需添加一个新键

git config git_key_name git_key_value