关键user.name Git的多个值

tsh*_*uck 62 git github

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

mb2*_*b21 106

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

git config --global --replace-all user.email "new@mail.com"
Run Code Online (Sandbox Code Playgroud)

  • 实际回答这个问题的唯一答案.+1 (7认同)
  • 如果有本地存储库设置,则不会重置这些设置。重复没有 `--global` 标志的命令来重置这些:`git config --replace-all user.email "new@mail.com"` (5认同)
  • 对于“core.autocrlf”变量,这对我不起作用。它只设置了下面的一项。 (2认同)

Von*_*onC 46

更新(2012年12月)

git1.8.1rc1现在以不同的方式运行:

"git config --get"用于诊断同一个配置文件中同一个变量的多个定义是否存在错误,但它现在应用了内部配置逻辑使用的"最后一个胜利"规则.

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


原始答案(2010年11月)

git配置手册页提到:

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

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

正如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)
Run Code Online (Sandbox Code Playgroud)

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


来自评论:

检查文件"本地","全局"和"设置"我只能user.name在全球看到一个.
git config --listgit config --get-all user.name给它两次我

正如我在这里提到的Git 2.8(2016年3月),您可以使用(查看所有设置:

git config -l --show-origin
Run Code Online (Sandbox Code Playgroud)

您可以看到重复设置的位置(本地,全局,系统),您可以使用git config [--local/--global/--system] --replace-all key value,如mb21答案.

  • 如果你有一个覆盖用户全局名称的本地repo名称,`git config --get-all user.name`将打印它们,而不是告诉你哪一个来自哪里.这就是为什么我建议只看文件; 似乎比试图用命令查询更容易. (5认同)
  • 问题是"如何将其设置为单个名称?" - 我看不到上面的答案? (3认同)

Cas*_*bel 12

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

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


Sum*_*not 7

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

转到您的应用程序目录

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

打开文件配置文件

它会显示一些像

[user]
    name = =
    name = =
    email = =
Run Code Online (Sandbox Code Playgroud)

用那些替换那些

[user]
    name = username
    email = user@test.com
Run Code Online (Sandbox Code Playgroud)


luk*_*uke 7

要调试此类事情,您可以使用以下命令:

git config --list --show-origin
Run Code Online (Sandbox Code Playgroud)

它显示了每个配置条目的原始文件。
带有重复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
Run Code Online (Sandbox Code Playgroud)

您可以使用--system--global检查您的 gitconfig 文件所在的位置:

git config --global --list --show-origin
Run Code Online (Sandbox Code Playgroud)

示例输出:

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
Run Code Online (Sandbox Code Playgroud)


Sch*_*der 5

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

git config --list
Run Code Online (Sandbox Code Playgroud)

输出示例:

user.email=abarker@cern.ch
user.name=fiveisgreen
user.github=fiveisgreen
user.name=Anthony
Run Code Online (Sandbox Code Playgroud)

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

git config --global --unset user.name
Run Code Online (Sandbox Code Playgroud)

  • 如果您有重复的配置,`git config --global --replace-all user.email“ Prince.Agbebiyi@me.com”可以使用 (2认同)