Более одного значения для ключа user.name Git

По какой-то причине я получаю сообщение об ошибке "Более одного значения для ключевого user.name", когда я пытаюсь установить user.name для моей учетной записи git. Как установить его на одно имя?

Ответ 1

Обновление (декабрь 2012)

git1.8.1rc1 теперь работает по-другому:

"git config --get" используется для диагностики наличия нескольких определений одной и той же переменной в одном и том же файле конфигурации как ошибка, но теперь он применяет правило "последних побед", используемое внутренней логикой конфигурации.

Строго говоря, это может быть регрессия API, но ожидается, что никто не заметит это на практике.


Оригинальный ответ (ноябрь 2010)

Страница руководства 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 должен быть исправлен.


Из комментариев:

Изучая файлы "local", "global" и "settings", я вижу только один user.name в global.
Но git config --list и git config --get-all user.name дают его мне дважды

Как я уже упоминал в Git 2.8 (март 2016 года), вы можете использовать (чтобы увидеть все настройки:

git config -l --show-origin

Как только вы увидите, где находится дубликат настройки (локальный, глобальный, системный), вы можете использовать git config [--local / --global / --system] --replace-all key value, как в ответе mb21.

Ответ 2

Если вы просто хотите reset всех из них:

git config --global --replace-all user.email "[email protected]"

Ответ 3

Вы должны изучить содержимое ~/.gitconfig (ваш пользовательский глобальный конфиг), а также .git/config в рассматриваемом репозитории (специфическая для репо конфигурация). Вы должны увидеть две строки name в разделе user в одном из них. (Это может быть два отдельных раздела пользователя в одном файле.) Просто удалите тот, который вы не хотите, и вам должно быть хорошо, чтобы идти.

Вы также можете установить его с помощью git config --global user.name "Desired name", если вы хотите, чтобы он был глобальным параметром (возможно, в случае) или тем же минусом --global для настройки, специфичной для репо, но, вероятно, лучше всего проверить файлы и найти виновника самостоятельно, чтобы убедиться, что вы знаете, что у вас есть. Репо-специфический переопределяет глобальный. В идеале вы должны указать свое имя по всему миру и только переопределить его в проекте по уважительной причине.

Ответ 4

Вы можете вручную изменить/изменить имя пользователя и адрес электронной почты для github

Перейдите в каталог приложений

Просмотреть все скрытые файлы... В этом перейдите в .git скрытую папку

Открыть файл конфигурации файла

Он отобразит некоторые строки, например

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

Замените эту строку на

[user]
    name = username
    email = [email protected]

Ответ 5

Сначала посмотрите, какие user.names находятся в config:

git config --list

Пример вывода:

[email protected]
user.name=fiveisgreen
user.github=fiveisgreen
user.name=Anthony

В этом примере имя пользователя указано дважды. Чтобы удалить дубликат, выполните следующие действия:

git config --global --unset user.name

Ответ 6

Чтобы отладить такие вещи, вы можете использовать эту команду:

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   [email protected]
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   [email protected]
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

Ответ 7

Эта тема очень помогла мне. Вот что я сделал, чтобы разрешить дубликат ключевой записи в моих глобальных настройках конфигурации. Windows 7. Я искал файл с именем .gitconfig, который находился в /users/owner в моей системе. Я отредактировал его с помощью текстового редактора (Atom) и удалил строку нарушения.

Я полагаю, что дубликат ключа был установлен, когда я непреднамеренно закрыл свой адрес электронной почты в кавычках, используя команду git config, по крайней мере, то, что указывает мой журнал оболочки. По электронной почте Ой!