Aus irgendeinem Grund wird die Fehlermeldung "Mehr als ein Wert für den Schlüssel user.name" angezeigt, wenn ich versuche, den user.name für mein Git-Konto festzulegen. Wie kann ich einen einzelnen Namen festlegen?
Ich glaube, ich habe ein ähnliches Problem. Aber ich kann hier keine Antwort finden. Ich bin mir nicht sicher warum und ob meine Frage von dieser dupliziert würde. Ich frage mich, ob Leute, die diese Frage beantwortet haben, bereit wären, das Problem zu klären. Wenn ich die Dateien "lokal", "global" und "Einstellungen" untersuche, kann ich nur eine user.namein global sehen. Aber git config --listund git config --get-all user.namegibt es mir zweimal. Aber git config --local --get-all user.namegibt keine. git config --global --get-all user.namegibt einen einzigen. git config --system --get-all user.namegibt keine. Seltsam!?
DrBeco
Ich habs! Nach dem Upgrade hat etwas Seltsames dazu geführt, dass Git sowohl den Link als auch die Datei als separate Sache betrachtet. Ich hatte einen ln ~/.config/git/config ~/.gitconfigLink. Jetzt habe ich die Linkdatei gelöscht ~/.gitconfig. Ich habe es vor einiger Zeit hinzugefügt, als git das ~/.config/Verzeichnis nicht angesehen hat, um besser organisiert zu sein.
DrBeco
1
@ DrBeco, Dieser Fehler tritt auf, wenn Sie versehentlich so etwas ausführen git config user.name foo bar.
"git config --get" wird verwendet, um das Vorhandensein mehrerer Definitionen derselben Variablen in derselben Konfigurationsdatei als Fehler zu diagnostizieren. Jetzt wird jedoch die von der internen Konfigurationslogik verwendete Regel "Last One Wins" angewendet .
Genau genommen kann dies eine API-Regression sein, aber es wird erwartet, dass dies in der Praxis niemand bemerken wird.
Ursprüngliche Antwort (November 2010)
Die git config Manpage erwähnt:
Die Variablennamen unterscheiden nicht zwischen Groß- und Kleinschreibung und es sind nur alphanumerische Zeichen und - zulässig. Es kann mehr als einen Wert für eine bestimmte Variable geben. Wir sagen dann, dass die Variable mehrwertig ist .
Tatsächlich werden solche Konfigurationseinstellungen (mit mehreren möglichen Werten) als Multivar bezeichnet
Wie Jefromi vorschlägt, sehen Sie in welcher der 3 Konfigurationsdateien mehr als eine user.nameZeile.
Sie können mehrere Werte wie folgt abfragen:
Die eine Konfigurationsdatei, die mehr als einen user.nameWert beantwortet , muss repariert werden.
Aus den Kommentaren:
Wenn ich die Dateien "lokal", "global" und "Einstellungen" untersuche, kann ich nur eine user.namein global sehen.
Aber git config --listund git config --get-all user.namegibt es mir zweimal
Wie ich hier mit Git 2.8 (März 2016) erwähne , können Sie Folgendes verwenden (um alle Einstellungen anzuzeigen:
git config -l --show-origin
Wenn Sie sehen, wo sich die doppelte Einstellung befindet (lokal, global, System), können Sie sie git config [--local/--global/--system] --replace-all key valuewie in der Antwort von mb21 verwenden .
Wenn Sie einen lokalen Repo-Namen haben, der einen globalen Benutzernamen überschreibt, git config --get-all user.namewerden beide gedruckt und nicht angegeben, welcher von wo stammt. Deshalb habe ich vorgeschlagen, nur die Dateien anzusehen. scheint einfacher zu sein, als vorsichtig mit dem Befehl abzufragen.
Cascabel
@Jefromi: Sie haben Recht, aber Sie können die globale und Systemkonfiguration mit den beiden letzten Abfragen schnell entfernen. Wie auch immer, ich habe Ihre Antwort zuerst
positiv
4
Die Frage lautet: "Wie kann ich einen einzelnen Namen festlegen?" - Ich kann die Antwort oben nicht sehen?
Luke Puplett
@LukePuplett Sie können einen einzelnen Namen festlegen, indem Sie: a / die verschiedenen Werte auf System-, globaler und lokaler Ebene in denselben ändern oder b / zusätzliche Werte entfernen und nur eine Ebene beibehalten. Jedes Mal ist eine einfache git config key valuebeteiligt, aber Sie müssen zuerst den Wert auf jeder Ebene bestimmen. Hier kommt meine Antwort ins Spiel.
VonC
@VonC In der Windows-Version ist etwas Seltsames los. Durch das Festlegen globaler Einstellungen für das Diff-Tool werden immer mehr k: v-Paare in der .gitconfig-Datei hinzugefügt
Die einzige Antwort, die die Frage tatsächlich beantwortet. +1
Daniel Mai
5
Wenn lokale Repository-Einstellungen vorhanden sind, werden diese nicht zurückgesetzt. Wiederholen Sie den Befehl ohne das --globalFlag, um diese zurückzusetzen:git config --replace-all user.email "[email protected]"
Unixmonkey
1
Dies sollte die beste Antwort sein
neilsimp1
1
Dies ist die einzige Antwort, die die Frage beantwortet - Sie haben Recht. Es hat tatsächlich die doppelten Einträge entfernt, danke @ mb21
samuel owino
1
Dies funktioniert bei mir für die Variable 'core.autocrlf' nicht. Es wurde nur das unten stehende eingestellt.
Xiao Peng - ZenUML.com
12
Sie sollten den Inhalt ~/.gitconfig(Ihrer benutzer-globalen Konfiguration) sowie .git/configdas betreffende Repository (die repo-spezifische Konfiguration) untersuchen. Sie sollten zwei nameZeilen unter einem userAbschnitt in einer davon sehen. (Es können auch zwei separate Benutzerabschnitte in einer Datei sein.) Löschen Sie einfach den Abschnitt, den Sie nicht möchten, und Sie sollten bereit sein, loszulegen.
Sie können es auch direkt festlegen, git config --global user.name "Desired name"wenn Sie möchten, dass es sich um eine globale Einstellung handelt (wahrscheinlich der Fall), oder dasselbe abzüglich der --globalfür eine repospezifische Einstellung - aber es ist wahrscheinlich am besten, die Dateien zu überprüfen und den Schuldigen selbst zu finden, um sie vorzunehmen sicher weißt du was du hast. Das repospezifische überschreibt das globale. Idealerweise sollten Sie Ihren Namen global festlegen und ihn nur aus gutem Grund in einem Projekt überschreiben.
Ich habe mehrere Namen in .gitconfig beobachtet und sie auf einen einzigen Wert aktualisiert. Und dann global zugewiesen, wie Sie in / etc / bashrc / erwähnt haben. Der neue Wert wurde aus der globalen Konfiguration übernommen. Danke.
Kumar
7
Sie können den Benutzernamen und die E-Mail-Adresse für github manuell ändern / bearbeiten
Wechseln Sie in Ihr Anwendungsverzeichnis
Alle versteckten Dateien anzeigen ... Gehen Sie in den .gitversteckten Ordner
git config --global --replace-all user.email "[email protected]"funktioniert, wenn Sie doppelte Konfiguration haben
Babajide Prince
5
Um solche Dinge zu debuggen, können Sie diesen Befehl verwenden:
git config --list --show-origin
Es zeigt die Ursprungsdatei für jeden Konfigurationseintrag.
Beispielausgabe mit duplizierter core.autocrlfund unerwünschter C:\\ProgramData/Git/configDatei:
Dieser Thread hat mir sehr geholfen. Folgendes habe ich getan, um einen doppelten Schlüsseleintrag in meinen globalen Konfigurationseinstellungen aufzulösen. Windows 7. Ich habe nach einer Datei namens .gitconfig gesucht, die sich auf meinem System in / users / owner befindet. Ich habe es mit einem Texteditor (Atom) bearbeitet und die fehlerhafte Zeile entfernt.
Ich glaube, der doppelte Schlüssel wurde gesetzt, als ich meine E-Mail-Adresse versehentlich in Anführungszeichen gesetzt habe, während ich den Befehl git config verwendet habe. Zumindest zeigt dies mein Shell-Protokoll an. Ups!
user.name
in global sehen. Abergit config --list
undgit config --get-all user.name
gibt es mir zweimal. Abergit config --local --get-all user.name
gibt keine.git config --global --get-all user.name
gibt einen einzigen.git config --system --get-all user.name
gibt keine. Seltsam!?ln ~/.config/git/config ~/.gitconfig
Link. Jetzt habe ich die Linkdatei gelöscht~/.gitconfig
. Ich habe es vor einiger Zeit hinzugefügt, als git das~/.config/
Verzeichnis nicht angesehen hat, um besser organisiert zu sein.git config user.name foo bar
.Antworten:
Update (Dezember 2012)
git1.8.1rc1 funktioniert jetzt anders:
"git config --get" wird verwendet, um das Vorhandensein mehrerer Definitionen derselben Variablen in derselben Konfigurationsdatei als Fehler zu diagnostizieren. Jetzt wird jedoch die von der internen Konfigurationslogik verwendete Regel "Last One Wins" angewendet .
Ursprüngliche Antwort (November 2010)
Die git config Manpage erwähnt:
Tatsächlich werden solche Konfigurationseinstellungen (mit mehreren möglichen Werten) als Multivar bezeichnet
Wie Jefromi vorschlägt, sehen Sie in welcher der 3 Konfigurationsdateien mehr als eine
user.name
Zeile.Sie können mehrere Werte wie folgt abfragen:
Die eine Konfigurationsdatei, die mehr als einen
user.name
Wert beantwortet , muss repariert werden.Aus den Kommentaren:
Wie ich hier mit Git 2.8 (März 2016) erwähne , können Sie Folgendes verwenden (um alle Einstellungen anzuzeigen:
Wenn Sie sehen, wo sich die doppelte Einstellung befindet (lokal, global, System), können Sie sie
git config [--local/--global/--system] --replace-all key value
wie in der Antwort von mb21 verwenden .quelle
git config --get-all user.name
werden beide gedruckt und nicht angegeben, welcher von wo stammt. Deshalb habe ich vorgeschlagen, nur die Dateien anzusehen. scheint einfacher zu sein, als vorsichtig mit dem Befehl abzufragen.git config key value
beteiligt, aber Sie müssen zuerst den Wert auf jeder Ebene bestimmen. Hier kommt meine Antwort ins Spiel.Wenn Sie nur alle zurücksetzen möchten:
quelle
--global
Flag, um diese zurückzusetzen:git config --replace-all user.email "[email protected]"
Sie sollten den Inhalt
~/.gitconfig
(Ihrer benutzer-globalen Konfiguration) sowie.git/config
das betreffende Repository (die repo-spezifische Konfiguration) untersuchen. Sie sollten zweiname
Zeilen unter einemuser
Abschnitt in einer davon sehen. (Es können auch zwei separate Benutzerabschnitte in einer Datei sein.) Löschen Sie einfach den Abschnitt, den Sie nicht möchten, und Sie sollten bereit sein, loszulegen.Sie können es auch direkt festlegen,
git config --global user.name "Desired name"
wenn Sie möchten, dass es sich um eine globale Einstellung handelt (wahrscheinlich der Fall), oder dasselbe abzüglich der--global
für eine repospezifische Einstellung - aber es ist wahrscheinlich am besten, die Dateien zu überprüfen und den Schuldigen selbst zu finden, um sie vorzunehmen sicher weißt du was du hast. Das repospezifische überschreibt das globale. Idealerweise sollten Sie Ihren Namen global festlegen und ihn nur aus gutem Grund in einem Projekt überschreiben.quelle
Sie können den Benutzernamen und die E-Mail-Adresse für github manuell ändern / bearbeiten
Wechseln Sie in Ihr Anwendungsverzeichnis
Alle versteckten Dateien anzeigen ... Gehen Sie in den
.git
versteckten OrdnerDatei-Konfigurationsdatei öffnen
Es werden einige Zeilen wie angezeigt
Ersetzen Sie diese Zeile durch
quelle
Schauen Sie sich zuerst an, welche user.names in der Konfiguration enthalten sind:
Beispielausgabe:
In diesem Beispiel wird user.name zweimal aufgeführt. So entfernen Sie das Duplikat:
quelle
git config --global --replace-all user.email "[email protected]"
funktioniert, wenn Sie doppelte Konfiguration habenUm solche Dinge zu debuggen, können Sie diesen Befehl verwenden:
Es zeigt die Ursprungsdatei für jeden Konfigurationseintrag.
Beispielausgabe mit duplizierter
core.autocrlf
und unerwünschterC:\\ProgramData/Git/config
Datei:Sie können dasselbe mit
--system
und tun--global
, um zu überprüfen, wo sich Ihre gitconfig-Dateien befinden:Beispielausgabe:
quelle
Dieser Thread hat mir sehr geholfen. Folgendes habe ich getan, um einen doppelten Schlüsseleintrag in meinen globalen Konfigurationseinstellungen aufzulösen. Windows 7. Ich habe nach einer Datei namens .gitconfig gesucht, die sich auf meinem System in / users / owner befindet. Ich habe es mit einem Texteditor (Atom) bearbeitet und die fehlerhafte Zeile entfernt.
Ich glaube, der doppelte Schlüssel wurde gesetzt, als ich meine E-Mail-Adresse versehentlich in Anführungszeichen gesetzt habe, während ich den Befehl git config verwendet habe. Zumindest zeigt dies mein Shell-Protokoll an. Ups!
quelle