出于某种原因,当我尝试为我的git帐户设置user.name时,我收到“key user.name的多个值”的错误。如何将其设置为单个名称?
答案 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 --list
和git 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
,就像mb21的answer一样。
答案 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