Auf meinem System wurde der user.email
git Konfigurationswert nicht auf globaler Ebene festgelegt. Stattdessen konfiguriere ich es individuell in jeder Sandbox. Dies liegt daran, dass ich verschiedene E-Mail-Adressen für verschiedene Projekte verwenden muss.
Leider habe ich manchmal vergessen, den Wert beim Erstellen einer neuen Sandbox zu konfigurieren. In diesen Fällen "schätzt" git einen Wert anhand von Informationen aus der Umgebung. Das führt zu verschiedenen Problemen, zum Beispiel werden mir auf GitHub keine Commits zugewiesen, und ich werde nicht viel Glück haben, wenn ich diese Commits mit @localhost
E-Mail-Adressen bekomme, die mir rückwirkend zugeschrieben werden.
Gibt es eine Möglichkeit, git auf Fehler zu konfigurieren, anstatt zu raten, wenn ich versuche, ohne einen lokalen oder globalen user.email
-Wert zu committen?
Dafür gibt es jetzt eine Konfigurationsoption.
user.useConfigOnly
Weisen Sie Git an, zu versuchen, die Standardwerte für user.email und user.name zu erraten, und rufen Sie stattdessen nur die Werte aus der Konfiguration ab.
Also setze das so auf wahr:
%Vor%Und wenn Sie das nächste Mal versuchen, einen Commit zu machen, ohne dass user.email und user.name explizit gesetzt sind, erhalten Sie einen Fehler.
%Vor%Sie können einen Pre-Commit-Hook verwenden, um Sie aufzufordern, Ihre projektspezifische E-Mail-Adresse einzurichten. Zum Beispiel:
%Vor%Dies führt dazu, dass das Festschreiben ohne die entsprechende Konfiguration fehlschlägt:
%Vor%Sie können Git-Vorlagen verwenden, um sicherzustellen, dass der Hook standardmäßig in zukünftigen Repositories vorhanden ist. indem Sie den Hook in den Vorlagenordner platzieren:
%Vor%Der genaue Speicherort des Vorlagenordners kann je nach Betriebssystem / Distribution variieren.
Bei bestehenden Repositories - entweder erstellen / kopieren Sie den Hook an Ort oder wenn der git-core Templates-Ordner aktualisiert wurde, führen Sie git init
aus, um die neue Hook-Datei zu erstellen.
Die hier vorgeschlagenen Vorab-Lösungen funktionieren gut und ich werde einen von ihnen akzeptieren. Ich benutze dies am Ende:
%Vor% Es wird systemweit in meiner ~/.gitconfig
-Datei mit dem init.templatedir
config-Wert aktiviert, den ich in einem anderen Stack erwähnt habe Überlaufpost . Ich habe meine Vorlage dir auf github als Teil meiner git-tools Sammlung.
Außerdem habe ich festgestellt, dass ich in meiner Shell-Prompt-Logik, die bereits den Git-Status zur Eingabeaufforderung hinzufügt, eine große, fette Warnung ausgeben kann, wenn ich in eine Sandbox cdde, die nicht% co_de hat % Wert konfiguriert.
In meinem user.email
:
Dies erzeugt eine leicht sichtbare Warnung:
Es wäre sehr hokey und könnte in Randfällen brechen, aber Sie könnten einen systemweiten post-commit
Hook schreiben, der den Autor des neuen Commits betrachtet und ihn rückgängig macht (via git reset
), wenn es sich um einen Schein handelt.
Anders als das, nein, Git ist glücklich, irgendeine lächerliche E-Mail-Adresse zu verwenden, die es zusammen als Standard verschmilzt.
Tags und Links git