Более одного значения для ключа user.name Git - PullRequest
58 голосов
/ 30 ноября 2010

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

Ответы [ 7 ]

98 голосов
/ 26 июня 2013

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

git config --global --replace-all user.email "new@mail.com"
43 голосов
/ 30 ноября 2010

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

git1.8.1rc1 теперь работает иначе:

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

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


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

Страница руководства git config упоминает:

Имена переменных не чувствительны к регистру и допускаются только буквенно-цифровые символы и -.
Может быть несколько значений дляданная переменная;тогда мы говорим, что переменная имеет многозначное значение .

На самом деле такие настройки конфигурации (с несколькими возможными значениями) называются multivar

Как предлагает Джефромипосмотрите, в каком из 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 inglobal.
Но 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 * ответ .

12 голосов
/ 30 ноября 2010

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

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

7 голосов
/ 11 февраля 2014

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

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

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

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

Появятся строки вроде

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

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

[user]
    name = username
    email = user@test.com
5 голосов
/ 10 января 2014

Сначала посмотрите, какие имена пользователей есть в конфигурации:

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
4 голосов
/ 19 октября 2017

Для отладки таких вещей вы можете использовать эту команду:

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
2 голосов
/ 08 сентября 2016

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...