Git
Deutsch ▾ Topics ▾ Latest version ▾ git-config last updated in 2.43.0

NAME

git-config – Repository eigene oder globale Optionen auslesen und setzen

ÜBERSICHT

git config [<Datei-Option>] [--type=<Typ>] [--show-origin] [--show-scope] [-z|--null] Name [Wert [Wert_Regex]]
git config [<Datei-Option>] [--type=<Typ>] --add Name Wert
git config [<Datei-Option>] [--type=<Typ>] --replace-all Name Wert [Wert_Regex]
git config [<Datei-Option>] [--type=<Typ>] [--show-origin] [--show-scope] [-z|--null] --get Name [Wert_Regex]
git config [<Datei-Option>] [--type=<Typ>] [--show-origin] [--show-scope] [-z|--null] --get-all Name [Wert_Regex]
git config [<Datei-Option>] [--type=<Typ>] [--show-origin] [--show-scope] [-z|--null] [--name-only] --get-regexp Name_Regex [Wert_Regex]
git config [<Datei-Option>] [--type=<Typ>] [-z|--null] --get-urlmatch Name URL
git config [<Datei-Option>] --unset Name [Wert_Regex]
git config [<Datei-Option>] --unset-all Name [Wert_Regex]
git config [<Datei-Option>] --rename-section alter_Name neuer_Name
git config [<Datei-Option>] --remove-section Name
git config [<Datei-Option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
git config [<Datei-Option>] --get-color Name [Standard]
git config [<Datei-Option>] --get-colorbool Name [Standardausgabe-ist-tty]
git config [<Datei-Option>] -e | --edit

BESCHREIBUNG

Sie können mit diesem Befehl Optionen abfragen/setzen/ersetzen/leeren. Der Name ist tatsächlich der Abschnitt und der Schlüssel, getrennt durch einen Punkt, und der Wert wird außer Acht gelassen.

Einer Option können mehrere Zeilen hinzugefügt werden, indem Sie die Option --add verwenden. Wenn Sie eine Option, die auf mehreren Zeilen vorkommen kann, aktualisieren oder zurücksetzen wollen, muss ein regulärer POSIX-Ausdruck (regexp) value_regex angegeben werden. Nur die vorhandenen Werte, die mit dem regexp übereinstimmen, werden aktualisiert oder zurückgesetzt. Wenn Sie die Zeilen bearbeiten wollen, die mit dem regulären Ausdruck nicht übereinstimmen, setzen Sie einfach ein einzelnes Ausrufezeichen davor (siehe auch [BEISPIELE]).

Die Option --type=<Typ> veranlasst git config zu überprüfen, ob ein- und ausgehende Werte unter den angegebenen <Typ> zulässig sind. Wenn kein --type=<Typ> angegeben wird, wird keine Kanonisierung durchgeführt. Benutzer können einen bestehenden --type Bezeichner mit --no-type aufheben.

Standardmäßig werden die Werte aus den lokalen Konfigurationsdateien des Systems, der globalen Einstellung und der des Repositorys ausgelesen. Die Optionen --system, --global, --local, ---worktree und --file <Datei-Name> können verwendet werden, um dem Befehl anzuweisen, nur von diesem Speicherort zu lesen (siehe den Abschnitt [DATEIEN]).

Beim Schreiben wird der neue Wert standardmäßig in die lokale Konfigurationsdatei des Repositorys geschrieben, und die Optionen --system, --global, --worktree, --file <filename> können benutzt werden, um dem Befehl mitzuteilen, dass er dorthin schreiben soll (Sie können --local angeben, aber das ist schon die Voreinstellung).

Dieser Befehl schlägt bei einem Fehler mit einem Nicht-Null-Status fehl. Einige dieser Exit-Codes sind:

  • Der Abschnitt oder Schlüssel ist ungültig (ret=1),

  • weder Abschnitt noch Name wurde angegeben (ret=2),

  • die Konfigurationsdatei ist falsch (ret=3),

  • die Konfigurationsdatei kann nicht geschrieben werden (ret=4),

  • Sie versuchen, eine nicht existierende Option aufzuheben (ret=5),

  • Sie versuchen, eine Option rückgängig zu machen/einzustellen, für die mehrere Zeilen übereinstimmen (ret=5), oder

  • Sie versuchen, einen ungültigen regulären Ausdruck (regexp) zu verwenden (ret=6).

Bei erfolgreichem Abschluss gibt der Befehl den Exit-Code 0 zurück.

OPTIONEN

--replace-all

Das Standardverhalten ist, höchstens eine Zeile zu ersetzen. Dies ersetzt alle Zeilen, die dem Schlüssel entsprechen (und eventuell dem Wert_Regex).

--add

Fügt der Option eine neue Zeile hinzu, ohne bestehende Werte zu ändern. Das entspricht der Angabe von ^$ als Regex-Wert (value_regex) in --replace-all.

--get

Liefert den Wert für einen angegebenen Schlüssel (optional gefiltert durch einen dem Wert entsprechenden Regex). Gibt Fehlercode 1 zurück, wenn der Schlüssel nicht gefunden wurde. Wenn mehrere Schlüsselwerte gefunden werden, wird der letzte Wert zurückgegeben.

--get-all

Entspricht --get, liefert aber alle Werte eines mehrwertigen Schlüssels zurück.

--get-regexp

Wie --get-all, interpretiert den Namen aber als regulären Ausdruck und gibt die Schlüsselnamen aus. Der Abgleich mit regulären Ausdrücken unterscheidet derzeit zwischen Groß- und Kleinschreibung und erfolgt gegen eine kanonisierte Version des Schlüssels, in der die Namen von Abschnitt und Variablen kleingeschrieben werden, die Namen von Unterabschnitten jedoch nicht.

--get-urlmatch Name URL

Wenn ein zweiteiliger Name section.key angegeben wird, wird der Wert für section.<URL>.key zurückgegeben, dessen <URL>-Teil am besten zu der angegebenen URL passt (wenn kein solcher Schlüssel existiert, wird der Wert für section.key als Fallback verwendet). Wenn nur der Abschnitt als Name angegeben wird, geschieht das bei allen Schlüsseln in dem Abschnitt und sie werden aufgelistet. Falls kein Wert gefunden wird, liefert der Befehl den Fehlercode 1 zurück.

--global

Bei Schreib-Optionen: schreibt in die globale ~/.gitconfig Datei anstatt in die .git/config des Repositorys, schreibt in die $XDG_CONFIG_HOME/git/config Datei, wenn diese Datei existiert und die ~/.gitconfig Datei nicht.

Bei Lese-Optionen: Liest nur aus der globalen ~/.gitconfig und aus $XDG_CONFIG_HOME/git/config, statt aus allen verfügbaren Dateien.

Siehe auch [DATEIEN].

--system

Bei Schreib-Optionen: schreibt in die systemweite $(prefix)/etc/gitconfig Datei, anstatt im Repository auf .git/config.

Bei Lese-Optionen: nur aus systemweitem $(prefix)/etc/gitconfig lesen, nicht aus allen verfügbaren Dateien.

Siehe auch [DATEIEN].

--local

Bei Schreib-Optionen: Schreibt in die .git/config Datei des Repositorys. Dies entspricht dem Standardverhalten.

Bei Lese-Optionen: nur aus der Repository .git/config lesen, nicht aus allen verfügbaren Dateien.

Siehe auch [DATEIEN].

--worktree

Analog zu --local', außer dass `.git/config.worktree' gelesen oder geschrieben wird, sofern `extensions.worktreeConfig vorhanden ist. Falls nicht, ist es identisch mit --local.

-f Konfigurations-Datei
--file Konfigurations-Datei

Verwendet die genannte Konfigurations-Datei anstelle jener, die in GIT_CONFIG festgelegt ist.

--blob Blob

Analog zu --file, aber benutzt den genannten Blob anstelle einer Datei. Sie können z.B. master:.gitmodules verwenden, um Werte aus der Datei .gitmodules im Master-Branch zu lesen. Siehe den Abschnitt "REVISIONEN SPEZIFIZIEREN" in gitrevisions[7] für eine umfassende Liste von Schreibweisen für Blob-Namen.

--remove-section

Entfernt den angegebenen Abschnitt aus der Konfigurations-Datei.

--rename-section

Umbenennen des betreffenden Abschnitts auf einen neuen Namen.

--unset

Löscht die Zeile, auf die der Schlüssel passt, aus der Konfigurations-Datei.

--unset-all

Löscht alle Zeilen, auf die der Schlüssel passt, aus der Konfigurations-Datei.

-l
--list

Listet alle in der Konfigurations-Datei gesetzten Variablen mit ihren Werten auf.

--type <Typ>

git config sorgt dafür, dass jede Eingabe oder Ausgabe unter der/den angegebenen Typ-Bedingung(en) gültig ist und wird ausgehende Werte in der zulässigen Form von `<Typ>`ausgeben.

Zulässige Werte von <Typ> enthalten:

  • bool: die Werte entweder als „wahr“ (true) oder „falsch“ (false) deklarieren.

  • int: die Werte als einfache Dezimalzahlen deklarieren. Ein optionales Suffix von k, m oder g bewirkt, dass der Wert der Eingabe mit 1024, 1048576 oder 1073741824 multipliziert wird.

  • bool-or-int: entsprechend der obigen Beschreibung entweder nach bool oder int kanonisieren.

  • path: kanonisieren durch Hinzufügen einer führenden ~ zum Wert von $HOME und ~user zum Home-Verzeichnis für den angegebenen Benutzer. Dieser Spezifizierer hat keine Auswirkung, wenn ein Wert gesetzt wird (aber Sie können git config section.variable ~/ von der Kommandozeile aus benutzen, um Ihre Shell die Erweiterung durchführen zu lassen)

  • expiry-date: kanonisieren durch Konvertieren von einem fixen oder relativen Datumsstring in einen Zeitstempel. Diese Angabe hat keine Auswirkung beim Setzen des Wertes.

  • color: Wenn Sie einen Wert erhalten, kanonisieren Sie ihn, indem Sie ihn in eine ANSI-Farb-Escape-Sequenz konvertieren. Wenn ein Wert festgelegt wurde, so wird eine Überprüfung durchgeführt, um sicherzustellen, dass der angegebene Wert als ANSI-Farbe kanonisierbar ist, aber er wird so wie er ist ausgegeben.

--bool
--int
--bool-or-int
--path
--expiry-date

Historische Optionen zur Auswahl eines Typ-Bezeichners. Stattdessen sollte man besser --type wählen (siehe oben).

--no-type

Setzt den zuvor eingestellten Typ-Bezeichner zurück, falls zuvor einer eingestellt war. Diese Option verlangt, dass git config die abgerufene Variable nicht kanonisiert. --no-type hat keine Wirkung ohne --type=<type> oder --<type>.

-z
--null

Für alle Optionen, die Werte und/oder Schlüssel ausgeben, immer die Werte mit einem Null-Zeichen beenden (anstatt eines Zeilenumbruchs). Stattdessen sollte ein Zeilenumbruch als Trennzeichen zwischen Schlüssel und Wert verwendet werden. Dies ermöglicht z.B. ein sicheres Parsen der Ausgabe, ohne durch in den Werten enthaltene Zeilenumbrüche verwirrt zu werden.

--name-only

Nur die Namen der Konfigurationsvariablen für --list oder --get-regexp ausgeben.

--show-origin

Die Ausgabe aller abgefragten Konfigurationsoptionen mit dem Origin-Typ (Datei, Standardeingabe, Blob, Kommandozeile) und dem aktuellen Original (Konfigurationsdateipfad, Ref oder Blob-ID, falls zutreffend) erweitern.

--show-scope

Vergleichbar mit --show-origin insoweit es die Ausgabe aller abgefragten Konfigurationsoptionen um den Rahmen dieses Wertes (lokal, global, System, Befehl) erweitert.

--get-colorbool Name [Standardausgabe-ist-tty]

Finde die Farbeinstellung für Name (Beispielsweise color.diff) und gib "true" oder "false" aus. Standardausgabe-ist-tty sollte entweder "true" oder "false" sein und wird in Betracht gezogen, wenn in der Konfigurationsdatei "auto" steht. Falls Standardausgabe-ist-tty fehlt, dann wird die Standardausgabe des Programmes selbst überprüft und gibt Status 0 zurück, falls Farbe verwendet wird, andernfalls wird Status 1 zurückgegeben. Wenn die Farbeinstellung für Name undefiniert ist, verwendet der Befehl color.ui als Fallback.

--get-color Name [Standard]

Findet für name die konfigurierte Farbe (z.B. color.diff.new) und gibt sie als ANSI-Farb-Escape-Sequenz für die Standardausgabe aus. Der optionale Parameter default wird stattdessen verwendet, wenn für name keine Farbe konfiguriert ist.

--type=color [--default=<Vorgabe>] wird gegenüber --get-color bevorzugt (bitte aber beachten, dass --get-color den durch --type=color angehängten Zeilenumbruch auslässt).

-e
--edit

Öffnet einen Editor, um die angegebene Konfigurationsdatei zu ändern; entweder aus --system, --global, oder dem Repository (die Voreinstellung).

--[no-]includes

Berücksichtigt include.* Direktiven in Konfigurationsdateien, wenn Werte nachgeschlagen werden. Standardeinstellung ist off, wenn eine bestimmte Datei angegeben wird (z.B. mit --file, --global, usw.) und on, wenn alle Konfigurationsdateien durchsucht werden.

--default <Wert>

Wird mit --get benutzt. Wenn die angeforderte Variable nicht gefunden wird, dann wird <Wert> so eingesetzt als ob dieser der Variablen zugewiesen wurde.

KONFIGURATION

pager.config wird nur bei der Auflistung der Konfiguration beachtet, d.h. bei der Verwendung von --list oder einem der --get-*, die mehrere Ergebnisse liefern können. Die Voreinstellung ist die Verwendung eines Pagers.

DATEIEN

Wenn nicht explizit mit --file verändert, gibt es vier Dateien, in welchen git-config nach Optionen sucht:

$(prefix)/etc/gitconfig

Systemweite Konfigurationsdatei.

$XDG_CONFIG_HOME/git/config

Zweite benutzerspezifische Konfigurationsdatei. Wenn $XDG_CONFIG_HOME nicht gesetzt oder leer ist, wird $HOME/.config/git/config verwendet. Jede einwertige Variable, die in dieser Datei gesetzt ist, wird mit dem überschrieben, was in ~/.gitconfig steht. Es empfiehlt sich, diese Datei nicht zu erstellen, wenn manchmal ältere Versionen von Git verwendet werden, da diese Datei erst seit relativ kurzer Zeit unterstützt wird.

~/.gitconfig

Benutzerspezifische Konfigurationsdatei. Auch „globale“ Konfigurationsdatei genannt.

$GIT_DIR/config

Spezifische Konfigurationsdatei für das Repository.

$GIT_DIR/config.worktree

Diese Angabe ist optional und wird nur durchsucht, wenn extensions.worktreeConfig in $GIT_DIR/config vorhanden ist.

Falls keine weiteren Optionen gegeben werden, werden alle Leseoperationen auf allen verfügbaren Dateien ausgeführt. Wenn die globale oder die systemweite Konfigurationsdateien fehlen, werden sie ignoriert. Falls die Konfigurationsdatei des Repositorys nicht verfügbar oder lesbar ist, wird git config mit einem Fehlercode, der nicht null ist, beendet. In beiden Fällen jedoch wird keine Fehlermeldung ausgegeben.

Die Dateien werden in der oben angegebenen Reihenfolge gelesen, wobei der zuletzt gefundene Wert Vorrang vor früher gelesenen Werten hat. Werden mehrere Werte ermittelt, dann kommen alle Werte eines Schlüssels aus allen Dateien zum Einsatz.

Einzelne Konfigurationsparameter können beim Ausführen eines git-Befehls mit der Option -c überschrieben werden. Siehe git[1] für weitere Details.

Alle Schreiboptionen schreiben standardmäßig in die Konfigurationsdatei des Repositorys. Beachten Sie, dass dies auch Optionen wie --replace-all und --unset betrifft. git config wird immer nur eine Datei zur gleichen Zeit ändern.

Sie können diese Regeln entweder mit Optionen auf der Kommandozeile oder durch Umgebungsvariablen überschreiben. Die Optionen --global, --system und --worktree beschränken die Datei auf die globale, systemweite bzw. „pro-Worktree“-Datei. Die Umgebungsvariable GIT_CONFIG hat einen ähnlichen Effekt, aber Sie können jeden beliebigen Dateinamen angeben.

ENVIRONMENT

GIT_CONFIG

Beziehe die Konfiguration aus der gegebenen Datei anstelle von .git/config. Verwenden der Option "--global" erzwingt dies zu ~/.gitconfig. Das Verwenden der Option "--system" erzwingt dies zu ${prefix}/etc/gitconfig.

GIT_CONFIG_NOSYSTEM

Legt fest, ob die Leseeinstellungen aus der systemweiten Datei $(prefix)/etc/gitconfig übersprungen werden sollen. Siehe git[1] für Einzelheiten.

Siehe auch [DATEIEN].

BEISPIELE

Angenommen wird folgende .git/config-Datei:

#
# Dies ist die Konfigurationsdatei und
# ein '#' oder ein ';' stellt einen
# Kommentar dar.
#

; Kernvariablen
[core]
	; den Dateimodi nicht vertrauen
	filemode = false

; Unser diff-Algorithmus
[diff]
	external = /usr/local/bin/diff-wrapper
	renames = true

; Proxyeinstellungen
[core]
	gitproxy="proxy-Befehl" für kernel.org
	gitproxy=default-proxy ; für den Rest

; HTTP
[http]
	sslVerify
[http "https://weak.example.com"]
	sslVerify = false
	cookieFile = /tmp/cookie.txt

Sie können den Dateimodus auf "true" setzen mit

% git config core.filemode true

Die hypothetischen Proxy-Befehlseinträge haben tatsächlich ein entsprechendes Anhängsel, um zu erkennen, auf welche URL sie sich beziehen. Hier erfahren Sie, wie Sie den Eintrag für kernel.org in "ssh" ändern können.

% git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'

Dies stellt sicher, dass nur das Schlüssel/Wertpaar für kernel.org ersetzt wird.

Um den Eintrag für Umbenennungen zu löschen, verwenden Sie

% git config --unset diff.renames

Falls Sie einen Eintrag für eine Multivar (Eine Variable mit mehreren Einträgen, wie core.gitproxy oben), löschen möchten, müssen Sie eine Regex für den Wert exakt einer Zeile angeben.

Um den Wert für einen gegebenen Schlüssel abzufragen, benutzen Sie

% git config --get core.filemode

oder

% git config core.filemode

oder, um eine Multivar abzufragen:

% git config --get core.gitproxy "for kernel.org$"

Falls Sie alle Werte einer Multivar wissen möchten, verwenden Sie:

% git config --get-all core.gitproxy

Wenn Sie gerne gefährlich leben, können Sie alle core.gitproxy-Einträge durch einem neuen ersetzen mit

% git config --replace-all core.gitproxy ssh

Wenn Sie jedoch wirklich nur eine Zeile für den Standardproxy verändern möchten, beispielsweise diejenige ohne ein Anhängsel "for …​", können Sie dies so tun:

% git config core.gitproxy ssh '! for '

Um tatsächlich nur Werte mit einem Ausrufezeichen abzugleichen, müssen Sie

% git config section.key value '[!]'

Um einen neuen Proxy hinzuzufügen, ohne einen der vorhandenen Proxys zu ändern, verwenden Sie

% git config --add core.gitproxy '"proxy-command" for example.com'

Ein Beispiel, um angepasste Farbe der Konfigurationsdatei in Ihrem Script zu verwenden:

#!/bin/sh
WS=$(git config --get-color color.diff.whitespace "blue reverse")
RESET=$(git config --get-color "" "reset")
echo "${WS}Ihre Leerzeichen-Farbe oder invertiertes Blau${RESET}"

Für URLs in https://weak.example.com wird http.sslVerify auf false gesetzt, während es für alle anderen auf true gesetzt wird:

% git config --type=bool --get-urlmatch http.sslverify https://good.example.com
true
% git config --type=bool --get-urlmatch http.sslverify https://weak.example.com
false
% git config --get-urlmatch http https://weak.example.com
http.cookieFile /tmp/cookie.txt
http.sslverify false
Warning

Missing de/config.txt

See original version for this content.

BUGS

Bei Verwendung der veralteten Syntax [section.subsection] führt die Änderung eines Wertes dazu, dass ein mehrzeiliger Schlüssel anstelle einer Änderung hinzugefügt wird, falls der Unterabschnitt mit mindestens einem Großbuchstaben angegeben wird. Wenn beispielsweise die Konfiguration wie folgt aussieht

  [section.subsection]
    key = value1

und die Ausführung von git config section.Subsection.key value2 ergibt

  [section.subsection]
    key = value1
    key = value2

GIT

Teil der git[1] Suite

scroll-to-top