关键的user.name Git有多个值
出于某种原因,当我尝试为我的git帐户设置user.name时,出现“关键的user.name超过一个值”的错误。 我怎样才能把它设置成一个单一的名字?
更新(2012年12月)
git1.8.1rc1现在运行不同:
“git config –get”用于诊断同一个configuration文件中同一个variables的多个定义是否存在错误,但是现在它应用了内部configuration逻辑使用的“最后一个获胜”规则 。
严格来说,这可能是一个API回归,但预计没有人会注意到它在实践中。
原文答案(2010年11月)
gitconfiguration手册页提到:
variables名不区分大小写,只允许使用字母数字字符和 – 。
给定variables可以有多个值; 我们说那个variables是多值的 。
实际上,这样的configuration设置(有多个可能的值)称为multivar
正如Jeuttbuild议的那样,看看3个configuration文件中有多个user.name
行。
你可以像这样查询多个值:
git config --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
值的一个configuration文件需要修复。
来自评论:
检查文件“本地”,“全球”和“设置”我只能看到一个全局的用户名。
但是,git config --list
和git config --get-all user.name
给了我两次
正如我在这里提到的Git 2.8(2016年3月) ,您可以使用(查看所有设置:
git config -l --show-origin
你可以看到重复设置(local,global,system)的位置,你可以使用git config [--local/--global/--system] --replace-all key value
,就像mb21的答案一样 。
如果你只是想重置所有这些:
git config --global --replace-all user.email "new@mail.com"
您应该检查~/.gitconfig
(您的用户全局configuration)以及存储库中的.git/config
(回购特定configuration)的内容。 其中一个user
部分应该看到两个name
行。 (在一个文件中它也可以是两个独立的用户部分。)只要删除一个你不想要的,你应该很好走。
你也可以直接使用git config --global user.name "Desired name"
来设置它,如果你希望它是一个全局设置(可能是这样的话),或者减去--global
的特定于repo的设置 – 但是最好是检查文件并自己找出罪魁祸首,确保你知道你有什么。 回购专用的将覆盖全球。 理想情况下,你应该在全球范围内设置你的名字,只有在项目中有一个很好的理由才能覆盖它。
您可以手动更改/编辑github的用户名和电子邮件
转到您的应用程序目录
查看所有隐藏的文件…在那个去.git
隐藏的文件夹
打开文件configuration文件
它会显示一些行
[user] name = = name = = email = =
replace那些行
[user] name = username email = user@test.com
首先查看configuration中的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
这个线程帮了我很多。 这是我做了什么来解决在我的全局configuration设置重复键入口。 Windows 7.我search了一个名为.gitconfig的文件,它位于我系统上的/ users / owner。 我用文本编辑器(Atom)编辑它,并删除了违规行。
我相信当我不小心把我的电子邮件地址用引号引起来的时候,使用git config命令来设置重复键,至less这就是我的shell日志所指示的。 哎呀!
要debugging这样的事情,你可以使用这个命令:
git config --list --show-origin
它显示每个configuration条目的原始文件。
带有重复的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