Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.43.0 11/20/23
- 2.42.1 11/02/23
- 2.42.0 08/21/23
- 2.41.0 06/01/23
- 2.40.1 no changes
- 2.40.0 03/12/23
- 2.39.1 → 2.39.3 no changes
- 2.39.0 12/12/22
- 2.38.3 → 2.38.5 no changes
- 2.38.2 12/11/22
- 2.38.1 10/07/22
- 2.38.0 10/02/22
- 2.37.5 → 2.37.7 no changes
- 2.37.4 10/06/22
- 2.37.3 no changes
- 2.37.2 08/11/22
- 2.37.1 no changes
- 2.37.0 06/27/22
- 2.36.4 → 2.36.6 no changes
- 2.36.3 10/06/22
- 2.36.2 06/23/22
- 2.36.1 no changes
- 2.36.0 04/18/22
- 2.35.6 → 2.35.8 no changes
- 2.35.5 10/06/22
- 2.35.4 06/23/22
- 2.35.3 04/13/22
- 2.35.2 03/23/22
- 2.35.1 no changes
- 2.35.0 01/24/22
- 2.34.6 → 2.34.8 no changes
- 2.34.5 10/06/22
- 2.34.4 06/23/22
- 2.34.3 04/13/22
- 2.34.2 03/23/22
- 2.34.1 no changes
- 2.34.0 11/15/21
- 2.33.6 → 2.33.8 no changes
- 2.33.5 10/06/22
- 2.33.4 06/23/22
- 2.33.3 04/13/22
- 2.33.2 03/23/22
- 2.33.1 10/12/21
- 2.33.0 08/16/21
- 2.32.5 → 2.32.7 no changes
- 2.32.4 10/06/22
- 2.32.3 06/23/22
- 2.32.2 04/13/22
- 2.32.1 03/23/22
- 2.32.0 06/06/21
- 2.31.6 → 2.31.8 no changes
- 2.31.5 10/06/22
- 2.31.4 06/23/22
- 2.31.3 04/13/22
- 2.31.2 03/23/22
- 2.31.1 03/26/21
- 2.31.0 03/15/21
- 2.30.7 → 2.30.9 no changes
- 2.30.6 10/06/22
- 2.30.5 06/23/22
- 2.30.4 04/13/22
- 2.30.3 03/23/22
- 2.30.2 no changes
- 2.30.1 02/08/21
- 2.30.0 12/27/20
- 2.29.1 → 2.29.3 no changes
- 2.29.0 10/19/20
- 2.28.1 no changes
- 2.28.0 07/27/20
- 2.27.1 no changes
- 2.27.0 06/01/20
- 2.26.1 → 2.26.3 no changes
- 2.26.0 03/22/20
Ü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önnengit 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
(Beispielsweisecolor.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. FallsStandardausgabe-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ürName
undefiniert ist, verwendet der Befehlcolor.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 Parameterdefault
wird stattdessen verwendet, wenn fürname
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 istoff
, wenn eine bestimmte Datei angegeben wird (z.B. mit--file
,--global
, usw.) undon
, 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 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