Ich habe festgestellt, dass ich zwei Einträge habe, core.autocrlf
wenn ich laufegit config -l
$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
[email protected]
core.autocrlf=true
Diese letzten drei (von user.name abwärts) sind die einzigen in meiner C:\users\username\.gitconfig
Datei. Woher kommen all die anderen? Warum wird core.autocrlf zweimal aufgeführt?
Dies ist mit MSysGit 1.8.3 und ich habe auch Sourcetree installiert (Windows 7). In Sourcetree habe ich das Kontrollkästchen "Sourcetree erlauben, Ihre globalen Git-Konfigurationsdateien zu ändern" deaktiviert.
git
msysgit
git-config
RyanW
quelle
quelle
git config --list --show-origin
müssen Sie nicht raten, welche Git-Konfiguration wo ist. Siehe meine Antwort untenAntworten:
Git sucht an vier Stellen nach einer Konfigurationsdatei:
.gitconfig
..gitconfig
sich unter~/.gitconfig
.$XDG_CONFIG_HOME/git/config
oder$HOME/.config/git/config
..git/config
.Die Einstellungen werden in der folgenden Reihenfolge kaskadiert, wobei jede Datei Einstellungen hinzufügt oder überschreibt, die in der darüber liegenden Datei definiert sind.
Mit den folgenden Befehlen können Sie sehen, was jede Datei definiert hat:
Sie können sehen, was nur die Repository-spezifische Datei definiert hat, indem Sie die Datei
.git/config
für dieses Repository öffnen .Wenn Sie msysGit auf Windows verwenden, werden Sie wahrscheinlich Ihre Benutzer finden
~/.gitconfig
Datei , wo immer%homepath%
Punkte , wenn Sie verwenden ,echo %homepath%
von einer Windows - Eingabeaufforderung.Aus der Dokumentation für
git config
:quelle
.gitconfig
" unter Windows mit msysgit?C:\Program Files (x86)\Git\etc\gitconfig
. Ich bin mir nicht sicher, ob das das richtige ist.C:\Program Files\Git\mingw64\etc\gitconfig
C:\Program Files\Git\etc\gitconfig
Mit git 2.8 müssen Sie nicht mehr raten, welche Konfiguration wo eingestellt wurde! (März 2016)
Siehe Commit 70bd879 , Commit 473166b , Commit 7454ee3 , Commit 7454ee3 (19. Februar 2016), Commit 473166b , Commit 7454ee3 (19. Februar 2016), Commit 7454ee3 (19. Februar 2016) und Commit a0578e0 (17. Februar 2016) von Lars Schneider (
larsxschneider
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit dd0f567 , 26. Februar 2016)Die
git config
Manpage zeigt nun an:Beispielsweise:
Das wird zurückkehren:
Für eine Einstellung, wie von wisbucky kommentiert :
Mit Git 2.26 (Q1 2020) können Sie die
--show-scope
Option hinzufügen :quelle
user.cmdline=true
für--show-origin
die Arbeit erforderlich ist ? Außerdem ist mir aufgefallen, dass--show-origin
dies unmittelbar danach seinconfig
muss, um mit--get
und zu arbeiten--get-all
. So sollte es sein... config --show-origin --get-all core.autocrlf
-c 'user.cmdline=true'
Bit, das sich auf den Testumfang zu beziehen scheint: github.com/git/git/blob/…user.cmdline=true
in Git 2.13 notwendig zu sein, wird aber in Git 2.15 nicht mehr benötigt.Nachdem ich Git für Windows zuvor installiert und anschließend deinstalliert hatte, stellte ich fest, dass eine Konfigurationsdatei installiert ist, bei
C:\Users\All Users\Git\config
der es sich um eine Konfigurationsdatei auf Systemebene handelt, die weiterhin alle zukünftigen MinGW32-Git-Pakete betrifft (in meinem Fall habe ich ein portables MinGW32 ausgeführt) Git-Paket von meiner Firma zur Verfügung gestellt). Als ich rannteEs würde mir die Systemkonfigurationsdatei anzeigen, die sich unter befindet
mingw32/etc/gitconfig
, aber es würde immer noch die Werte vom ersten Speicherort laden. Dies wurde als Warnung angezeigt, dass Konfigurationswerte beim Versuch, Git LFS zu verwenden, kollidierten .(Hinweis: Dies kann auch eine Situation sein, in der LFS-Warnungen zu durchsetzungsfähig sind, # 861 )
quelle
Sie können verwenden
--show-origin
, um herauszufinden, woher die Konfigurationen stammen.Priorität der Konfigurationsdateien in Git für Windows:
Quelle: https://github.com/git-for-windows/git/blob/master@%7B2018-01-07%7D/Documentation/git-config.txt#L231
$PROGRAMDATA
ist eine Umgebungsvariable. Sie können den Wert dieser Variablen wie folgt abrufen:In Git Bash müssen Sie verwenden
echo "$ProgramData"
. In CMD müssen Sie verwendenecho %PROGRAMDATA%
. Beachten Sie, dass Git Bash anscheinend vorgibt, dass Umgebungsvariablen zwischen Groß- und Kleinschreibung unterscheiden.Was ist
$(prefix)
?Das Präfix ist das Verzeichnis der obersten Ebene, in das die Dinge installiert werden. In Git für Windows ist das entweder
<some-path>/mingw64
oder<some-path>/mingw32
.quelle
git config -l
Zeigt alle geerbten Werte von System, Global und Lokal an.Sie haben also irgendwo eine andere Konfigurationsdatei, die zusammen mit Ihrer benutzerdefinierten
.gitconfig
Datei geladen wird .quelle
Eine vollständige Antwort für Windows (dh eine Windows-Version der akzeptierten Antwort):
Wie Linux verfügt Windows über vier Ebenen von Konfigurationsdateien / -einstellungen und drei sind direkte Entsprechungen. Das Wichtigste ist das andere - das "Alle Apps / Benutzer" - insbesondere, da hier das Installationsprogramm Werte festlegt, z. B. "core.autocrlf = true", und dennoch nicht über die Befehlszeile darauf zugegriffen werden kann so verursacht es Verwirrung.
Alle Anwendungen und Benutzer
Dies ist wie eine freigegebene Version der 'System'-Einstellungen, falls Sie mehrere Git-Anwendungen installiert haben. Es gibt keinen Befehl 'git config', um auf diese zuzugreifen, aber sie wirken sich immer noch auf das Nettoergebnis einer Einstellung aus.
Speicherort der Konfigurationsdatei:
C: \ ProgramData \ Git \ config
(Beachten Sie, dass 'ProgramData' in älteren Windows-Versionen 'All Users' war.)
System
Speicherort der Konfigurationsdatei: C: / Programme / Git / mingw64 / etc / gitconfig
Benutzer
Speicherort der Konfigurationsdatei:% USERPROFILE% .gitconfig (Dies wird in 'C: / Users / <Benutzername>' aufgelöst.)
Repository
Speicherort der Konfigurationsdatei: [aktuelles Repository-Verzeichnis] /. Git / config
quelle
Unter Windows 7 (möglicherweise gleich oder ähnlich für Windows 10), für Visual Studio und die Git-Befehlszeile befindet sich Ihre globale Konfiguration in:
(Punkt steht vor dem Dateinamen)
Dies wird jedoch von Sourcetree zumindest im Git Embedded-Modus nicht berücksichtigt, und die Konfiguration erfolgt in:
(kein Punkt vor dem Dateinamen)
(Ich musste beide Dateien aktualisieren, um meine globalen Git-Einstellungen für den Git-Befehl und Sourcetree zu ändern.)
Ein weiterer lustiger Teil. Die Git-Hooks-Konfiguration funktionierte vom
AppData\Local\...
Standort aus, jedoch nach weiteren Recherchen über Process Monitor stellte ich fest, dass Sourcetree für meinen Benutzer auch global von einem vom Unternehmen zugeordneten Laufwerk lädt.Dies ist sehr wenig sinnvoll, da nur sehr wenige Anwendungen diesen Speicherort suchen, Sourcetree jedoch irgendwie. Wenn Sie es also nicht schaffen, gemäß den Standorteinstellungen in Sourcetree zu arbeiten, führen Sie Process Monitor aus und erstellen Sie eine Regel, um nur den Pfad zu protokollieren, der gitconfig und Sie enthält kann herausfinden, wo sich Ihre globale Konfiguration im Fall eines Benutzerverzeichnisses mit Netzwerkzuordnung wirklich befindet.
Und dies ist möglicherweise nicht einmal ein Fehler von Sourcetree, da ich jetzt beim Schreiben sehe, dass git.exe das lädt, aber dies geschieht nur für git.exe, das von Sourcetree ausgeführt wird, während Git eine direkte Befehlszeile verwendet
%USERPROFILE%\.gitconfig
Schließlich nahm ich alle Ergebnisse von Process Monitor, speiste sie in SQL Server ein und führte eine Abfrage aus, um eindeutige Ergebnisse zu erhalten (keine bestimmte Ausführungsreihenfolge, nur nach Pfad sortiert):
Ich weiß nicht, wie diese Konfigurationen miteinander zusammenhängen, aber ich weiß, dass einige andere überschreiben, andere Einstellungen von einem Ort aus funktionieren, andere von einem anderen.
Und die obige Liste wird von Sourcetree aufgerufen , wieder scheint eine direkte Befehlszeile mit Git gut zu funktionieren
%USERPROFILE%\.gitconfig
, und das ist nicht in dieser Liste, aber es würde so aussehen (unter Windows 7)C:\Users\pawel.cioch\.gitconfig
quelle
Darüber hinaus haben Sie das
git config -l --show-origin
, was ich hier mit Git 2.8 (März 2016) vorgestellt habe, jetzt mit Git 2.26 (Q1 2020)git config
lernte zu zeigen, in welchem "scope
" zusätzlich zu welcher Datei jede Konfigurationseinstellung stammt.Siehe Commit 145d59f , Commit 9a83d08 , Commit e37efa4 , Commit 5c105a8 , Commit 6766e41 , Commit 6dc905d , Commit a5cb420 (10. Februar 2020) und Commit 417be08 , Commit 3de7ee3 , Commit 329e6ec (24. Januar 2020) von Matthew Rogers (
ROGERSM94
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 5d55554 , 17. Februar 2020)Beispiel:
quelle
Wenn Sie den tatsächlichen Dateispeicherort suchen möchten, befindet er sich in Ihrem Home-Verzeichnis.
Es ist versteckt und mit einem "." Vorangestellt.
Wenn Sie also einen Mac verwenden, können Sie ihn in Ihrem Terminal
cd ~ && open .gitconfig
mit Ihrem bevorzugten Texteditor öffnen oder öffnen, zcd ~ && atom .gitconfig
.quelle