По какой-то причине я получаю сообщение об ошибке "Более одного значения для ключевого user.name", когда я пытаюсь установить user.name для моей учетной записи git. Как установить его на одно имя?
Более одного значения для ключа 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, по крайней мере, то, что указывает мой журнал оболочки. По электронной почте Ой!