出于某种原因,当我尝试为我的git帐户设置user.name时,出现了“关键user.name有多个值”的错误。如何将其设置为单个名称?
ln ~/.config/git/config ~/.gitconfig
链接。现在,我删除了链接文件~/.gitconfig
。我是在一段时间以前添加它的,当时git没有查看~/.config/
目录,以便更井井有条。
git config user.name foo bar
。
出于某种原因,当我尝试为我的git帐户设置user.name时,出现了“关键user.name有多个值”的错误。如何将其设置为单个名称?
ln ~/.config/git/config ~/.gitconfig
链接。现在,我删除了链接文件~/.gitconfig
。我是在一段时间以前添加它的,当时git没有查看~/.config/
目录,以便更井井有条。
git config user.name foo bar
。
Answers:
更新(2012年12月)
git1.8.1rc1现在的操作方式有所不同:
“ git config --get”用于将同一配置文件中的同一变量的多个定义作为错误诊断,但是现在它应用内部配置逻辑使用的“最后一个获胜”规则。
严格来说,这可能是API回归,但实际上没有人会注意到它。
原始答案(2010年11月)
git config手册页提到:
变量名称不区分大小写,并且仅允许字母数字字符和-。
一个给定变量可以有多个值;我们说那个变量是多值的。
实际上,这样的配置设置(具有多个可能的值)称为multivar
正如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 --list
和git config --get-all user.name
给它两次我
正如我在Git 2.8(2016年3月)中提到的那样,您可以使用(查看所有设置:
git config -l --show-origin
您可以看到重复设置的位置(本地,全局,系统)git config [--local/--global/--system] --replace-all key value
,如mb21的答案所示。
git config --get-all user.name
则将同时打印这两个名称,而不告诉您哪一个来自何处。这就是为什么我建议只查看文件的原因。似乎比尝试小心使用该命令要容易。
git config key value
都涉及一个简单操作,但是您首先需要确定每个级别上的值。那就是我的答案出现的地方。
如果您只想重置所有它们:
git config --global --replace-all user.email "new@mail.com"
--global
标志的命令以重置这些标志:git config --replace-all user.email "new@mail.com"
您应该检查~/.gitconfig
(您的用户全局配置)的内容以及.git/config
相关存储库中的内容(特定于仓库的配置)。您应该在其中name
一个的user
部分下看到两行。(也可以在一个文件中包含两个独立的用户部分。)只需删除不需要的部分,就可以了。
git config --global user.name "Desired name"
如果希望将其设置为全局设置(可能是这种情况),或者也可以将其设置为正值,则可以直接将其设置--global
为回购特定的设置-但最好是自己检查文件并找出罪魁祸首,确保您知道自己拥有什么。回购专用的将覆盖全局的。理想情况下,您应该全局设置名称,并且出于充分的理由仅在项目中覆盖它。
您可以手动更改/编辑github的用户名和电子邮件
转到您的应用程序目录
查看所有隐藏文件...在其中转到.git
隐藏文件夹
打开文件配置文件
它会显示一些像
[user]
name = =
name = =
email = =
将这些行替换为
[user]
name = username
email = user@test.com
要调试这些东西,可以使用以下命令:
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
首先看一下配置中的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
git config --global --replace-all user.email "Prince.Agbebiyi@me.com"
如果您有重复的配置,则可以使用
这个线程对我有很大帮助。这是我为解决全局配置设置中重复的键条目所做的工作。Windows7。我搜索了一个名为.gitconfig的文件,该文件位于系统上的/ users / owner中。我使用文本编辑器(Atom)对其进行了编辑,并删除了有问题的行。
我相信在使用git config命令时无意中将电子邮件地址括在引号中时,已设置了重复密钥,至少这是我的shell日志所指示的内容。哎呀!
user.name
在全局中看到一个。但git config --list
和git config --get-all user.name
给它两次给我。但git config --local --get-all user.name
一无所获。git config --global --get-all user.name
给出一个。git config --system --get-all user.name
什么都不给。奇怪!?