【问题标题】:More than one value for the key user.name Git键 user.name Git 的多个值
【发布时间】:2011-05-17 16:39:35
【问题描述】:

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

【问题讨论】:

  • 我想我也有类似的问题。但我在这里找不到答案。我不知道为什么,如果我的问题会从这个重复。我想知道回答这个问题的人是否愿意澄清这个问题。检查文件“本地”、“全局”和“设置”我只能在全局中看到一个user.name。但是git config --listgit 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 没有给出任何信息。奇怪!?
  • 知道了!升级后,一些奇怪的东西让 git 认为链接和文件是一个独立的东西。我有一个ln ~/.config/git/config ~/.gitconfig 链接。现在我删除了链接文件~/.gitconfig。前段时间加的,当时git没看~/.config/目录,为了更有条理。
  • @DrBeco,当您意外运行git config user.name foo bar 之类的内容时会发生此错误。

标签: git github


【解决方案1】:

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

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

【讨论】:

  • 真正回答问题的唯一答案。 +1
  • 如果有本地存储库设置,这不会重置这些设置。重复不带--global 标志的命令以重置它们:git config --replace-all user.email "new@mail.com"
  • 这应该是最佳答案
  • 这是回答问题的唯一答案 - 你是对的。它实际上删除了重复的条目感谢@mb21
  • 这对我来说不适用于 'core.autocrlf' 变量。它只在下面设置了一个。
【解决方案2】:

更新(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 值的配置文件。


来自cmets:

检查文件“本地”、“全局”和“设置”我在全局中只能看到一个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

【讨论】:

  • 如果你有一个覆盖用户全局名称的本地 repo 名称,git config --get-all user.name 将打印它们,而不是告诉你哪一个来自哪里。这就是为什么我建议只查看文件的原因;似乎比小心使用命令查询要容易。
  • @Jefromi:您是对的,但是您可以使用最后两个查询快速消除全局和系统配置。无论如何,我确实首先赞成您的回答;)
  • 问题是“如何将其设置为单个名称?” - 我看不到上面的答案?
  • @LukePuplett 您可以通过以下方式将其设置为单个名称:a/ 在系统、全局和本地级别将不同的值更改为相同的值,或者 b/ 删除额外的值并仅保留一个等级。每次都涉及到一个简单的git config key value,但您需要先确定每个级别的值。这就是我的答案出现的地方。
  • @RichVel 很好。 git config --show-origin --show-scope --get-all user.name 可以提供帮助。
【解决方案3】:

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

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

【讨论】:

  • 我在 .gitconfig 中观察到多个名称并将它们更新为单个值。然后按照您在 /etc/bashrc/ 中提到的全局分配它从全局配置中获取新值。谢谢。
【解决方案4】:

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

转到您的应用程序目录

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

打开文件配置文件

它会显示一些类似的行

[user]
    name = =
    name = =
    email = =

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

【讨论】:

    【解决方案5】:

    要调试这些东西,你可以使用这个命令:

    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】:

      首先查看配置中的用户名:

      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" 如果您有重复的配置,则可以使用
      【解决方案7】:

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

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

      【讨论】:

        【解决方案8】:

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

        首先检查你的配置

        git config --list
        

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

        #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
        

        【讨论】:

          【解决方案9】:

          我遇到了同样的问题。这是我修复它的方法。

          首先,检查配置中有多少个 user.name 或 user.email 字段:(在我的例子中,我有 4 到 5 个 user.name 和 user.email 字段)

          git config --list
          

          示例输出:

          user.email ==
          user.name ==
          user.email ==
          user.name ==
          user.email ==
          user.name ==
          user.email ==
          user.name ==
          user.email ==
          user.name ==
          

          现在转到您的 C:\Users[您的 PC 用户名] 并搜索文件 .gitconfig(它是一个隐藏文件。确保启用查看隐藏文件选项)。
          找到文件后打开它。现在删除 user.nameuser.email 的所有重复字段。

          您现在可以使用代码设置您的 user.name 和 user.email

          git config --global user.name "Ali"
          git config --global user.email "Abc@gmail.com"
          

          或在 .gitconfig 文件中手动键入您的 user.name= Aliuser.email=abc@gmail.com

          【讨论】:

            猜你喜欢
            • 2013-04-27
            • 1970-01-01
            • 2020-08-20
            • 1970-01-01
            • 2018-08-30
            • 2017-06-29
            • 1970-01-01
            • 2016-04-06
            • 2020-08-09
            相关资源
            最近更新 更多