English ▾ Themen ▾ Neueste Version ▾ git-config zuletzt aktualisiert in 2.52.0

NAME

git-config - Repository- oder globale Optionen abrufen und festlegen

SYNOPSIS

git config list [<file-option>] [<display-option>] [--includes]
git config get [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<pattern>] [--fixed-value] [--default=<default>] [--url=<url>] <name>
git config set [<file-option>] [--type=<type>] [--all] [--value=<pattern>] [--fixed-value] <name> <value>
git config unset [<file-option>] [--all] [--value=<pattern>] [--fixed-value] <name>
git config rename-section [<file-option>] <old-name> <new-name>
git config remove-section [<file-option>] <name>
git config edit [<file-option>]
git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]

BESCHREIBUNG

Mit diesem Befehl können Sie Optionen abfragen/festlegen/ersetzen/entfernen. Der Name ist tatsächlich der Abschnitt und der Schlüssel, getrennt durch einen Punkt, und der Wert wird escaped.

Mehrere Zeilen können zu einer Option hinzugefügt werden, indem die Option --append verwendet wird. Wenn Sie eine Option aktualisieren oder entfernen möchten, die auf mehreren Zeilen vorkommen kann, muss --value=<muster> (das ein erweiterter regulärer Ausdruck ist, es sei denn, die Option --fixed-value wird angegeben) angegeben werden. Nur die vorhandenen Werte, die dem Muster entsprechen, werden aktualisiert oder entfernt. Wenn Sie die Zeilen behandeln möchten, die *nicht* dem Muster entsprechen, stellen Sie ihnen einfach ein einzelnes Ausrufezeichen voran (siehe auch BEISPIELE), aber beachten Sie, dass dies nur funktioniert, wenn die Option --fixed-value nicht verwendet wird.

Die Option --type=<typ> weist git config an, sicherzustellen, dass eingehende und ausgehende Werte unter dem angegebenen <typ> kanonisiert werden können. Wenn keine --type=<typ> angegeben wird, findet keine Kanonisierung statt. Aufrufer können einen vorhandenen --type-Spezifizierer mit --no-type entfernen.

Beim Lesen werden standardmäßig die Werte aus den System-, globalen und lokalen Repository-Konfigurationsdateien gelesen, und die Optionen --system, --global, --local, --worktree und --file <dateiname> können verwendet werden, um dem Befehl mitzuteilen, nur aus diesem Speicherort zu lesen (siehe DATEIEN).

Beim Schreiben wird der neue Wert standardmäßig in die lokale Repository-Konfigurationsdatei geschrieben, und die Optionen --system, --global, --worktree, --file <dateiname> können verwendet werden, um dem Befehl mitzuteilen, dorthin zu schreiben (Sie können --local sagen, aber das ist der Standard).

Dieser Befehl schlägt mit einem nicht-null-Status bei einem Fehler fehl. Einige Exit-Codes sind:

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

  • es wurde kein Abschnitt oder Name angegeben (ret=2),

  • die Konfigurationsdatei ist ungültig (ret=3),

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

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

  • Sie versuchen, eine Option zu entfernen/festzulegen, für die mehrere Zeilen übereinstimmen (ret=5), oder

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

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

Eine Liste aller verfügbaren Konfigurationsvariablen kann mit dem Befehl git help --config abgerufen werden.

BEFEHLE

list

Listet alle in der Konfigurationsdatei gesetzten Variablen zusammen mit ihren Werten auf.

get

Gibt den Wert des angegebenen Schlüssels aus. Wenn der Schlüssel mehrmals in der Konfiguration vorhanden ist, wird der letzte Wert ausgegeben. Wenn --all angegeben wird, werden alle dem Schlüssel zugeordneten Werte ausgegeben. Gibt den Fehlercode 1 zurück, wenn der Schlüssel nicht vorhanden ist.

set

Legt den Wert für eine oder mehrere Konfigurationsoptionen fest. Standardmäßig weigert sich dieser Befehl, mehrwertige Konfigurationsoptionen zu schreiben. Die Übergabe von --all ersetzt alle mehrwertigen Konfigurationsoptionen durch den neuen Wert, während --value= alle Konfigurationsoptionen ersetzt, deren Werte dem angegebenen Muster entsprechen.

unset

Entfernt den Wert für eine oder mehrere Konfigurationsoptionen. Standardmäßig weigert sich dieser Befehl, mehrwertige Schlüssel zu entfernen. Die Übergabe von --all entfernt alle mehrwertigen Konfigurationsoptionen, während --value alle Konfigurationsoptionen entfernt, deren Werte dem angegebenen Muster entsprechen.

rename-section

Benennt den angegebenen Abschnitt in einen neuen Namen um.

remove-section

Entfernt den angegebenen Abschnitt aus der Konfigurationsdatei.

edit

Öffnet einen Editor zum Ändern der angegebenen Konfigurationsdatei; entweder --system, --global, --local (Standard), --worktree oder --file <config-file>.

OPTIONEN

--replace-all

Das Standardverhalten ist, höchstens eine Zeile zu ersetzen. Dies ersetzt alle Zeilen, die dem Schlüssel entsprechen (und optional --value=<muster>).

--append

Fügt eine neue Zeile zur Option hinzu, ohne bestehende Werte zu ändern. Dies ist dasselbe wie die Angabe von --value=^$ bei set.

--comment <nachricht>

Fügt einen Kommentar am Ende neuer oder geänderter Zeilen hinzu.

Wenn <nachricht> mit einem oder mehreren Leerzeichen beginnt, gefolgt von "", wird sie unverändert verwendet. Wenn sie mit "" beginnt, wird ein Leerzeichen vorangestellt, bevor sie verwendet wird. Andernfalls wird eine Zeichenkette " # " (ein Leerzeichen, gefolgt von einem Hash, gefolgt von einem Leerzeichen) vorangestellt. Und die resultierende Zeichenkette wird unmittelbar nach dem für die Variable definierten Wert platziert. Die <nachricht> darf keine Zeilenumbruchzeichen enthalten (mehrzeilige Kommentare sind nicht gestattet).

--all

Bei get: Gibt alle Werte für einen mehrwertigen Schlüssel zurück.

--regexp

Bei get: Interpretiert den Namen als regulären Ausdruck. Die reguläre Ausdrucksübereinstimmung ist derzeit Groß-/Kleinschreibung-sensitiv und erfolgt gegen eine kanonisierte Version des Schlüssels, bei der Abschnitts- und Variablennamen kleingeschrieben werden, Unterabschnittsnamen jedoch nicht.

--url=<URL>

Wenn ein zweigeteilter <name> als <abschnitt>.<schlüssel> angegeben wird, wird der Wert für <abschnitt>.<URL>.<schlüssel> zurückgegeben, dessen <URL>-Teil am besten zur angegebenen URL passt (wenn kein solcher Schlüssel existiert, wird der Wert für <abschnitt>.<schlüssel> als Fallback verwendet). Wenn nur der <abschnitt> als Name angegeben wird, geschieht dies für alle Schlüssel im Abschnitt und sie werden aufgelistet. Gibt den Fehlercode 1 zurück, wenn kein Wert gefunden wird.

--global

Zum Schreiben von Optionen: schreibt in die globale Datei ~/.gitconfig anstelle von .git/config im Repository, schreibt in die Datei $XDG_CONFIG_HOME/git/config, wenn diese Datei existiert und die Datei ~/.gitconfig nicht.

Zum Lesen von Optionen: liest nur aus der globalen Datei ~/.gitconfig und aus $XDG_CONFIG_HOME/git/config anstelle von allen verfügbaren Dateien.

Siehe auch DATEIEN.

--system

Zum Schreiben von Optionen: schreibt in die systemweite Datei $(prefix)/etc/gitconfig anstelle von .git/config im Repository.

Zum Lesen von Optionen: liest nur aus der systemweiten Datei $(prefix)/etc/gitconfig anstelle von allen verfügbaren Dateien.

Siehe auch DATEIEN.

--local

Zum Schreiben von Optionen: schreibt in die Datei .git/config im Repository. Dies ist das Standardverhalten.

Zum Lesen von Optionen: liest nur aus der Datei .git/config im Repository anstelle von allen verfügbaren Dateien.

Siehe auch DATEIEN.

--worktree

Ähnlich wie --local, außer dass aus $GIT_DIR/config.worktree gelesen oder dorthin geschrieben wird, wenn extensions.worktreeConfig aktiviert ist. Wenn nicht, ist es dasselbe wie --local. Beachten Sie, dass $GIT_DIR gleich $GIT_COMMON_DIR für den Hauptarbeitsbaum ist, aber die Form $GIT_DIR/worktrees/<id>/ für andere Arbeitsbäume hat. Siehe git-worktree[1], um zu erfahren, wie extensions.worktreeConfig aktiviert wird.

-f <config-datei>
--file <config-datei>

Zum Schreiben von Optionen: schreibt in die angegebene Datei anstelle von .git/config im Repository.

Zum Lesen von Optionen: liest nur aus der angegebenen Datei anstelle von allen verfügbaren Dateien.

Siehe auch DATEIEN.

--blob <blob>

Ähnlich wie --file, aber verwendet den angegebenen Blob anstelle einer Datei. Z.B. können Sie master:.gitmodules verwenden, um Werte aus der Datei .gitmodules im Master-Branch zu lesen. Siehe den Abschnitt "SPECIFYING REVISIONS" in gitrevisions[7] für eine vollständigere Liste von Möglichkeiten, Blobs zu benennen.

--value=<muster>
--no-value

Bei get, set und unset: Übereinstimmung nur mit <muster>. Das Muster ist ein erweiterter regulärer Ausdruck, es sei denn, --fixed-value wird angegeben.

Verwenden Sie --no-value, um <muster> zu entfernen.

--fixed-value

Wenn mit --value=<muster> verwendet, wird <muster> als exakter String behandelt und nicht als regulärer Ausdruck. Dies schränkt die übereinstimmenden Namens-/Wertpaare auf diejenigen ein, bei denen der Wert exakt gleich <muster> ist.

--type <typ>

git config stellt sicher, dass jede Eingabe oder Ausgabe unter der angegebenen Typbeschränkung(en) gültig ist und normalisiert ausgehende Werte in die kanonische Form von <typ>.

Gültige <typ> sind:

  • bool: Kanonisiert Werte true, yes, on und positive Zahlen als "true", sowie Werte false, no, off und 0 als "false".

  • int: Kanonisiert Werte als einfache Dezimalzahlen. Ein optionales Suffix von k, m oder g bewirkt, dass der Wert beim Einlesen mit 1024, 1048576 bzw. 1073741824 multipliziert wird.

  • bool-or-int: Kanonisiert entweder nach bool oder int, wie oben beschrieben.

  • path: Kanonisiert durch Erweitern eines führenden ~ zum Wert von $HOME und ~user zum Home-Verzeichnis des angegebenen Benutzers. Dieser Spezifizierer hat keine Auswirkung beim Setzen des Wertes (aber Sie können git config section.variable ~/ von der Kommandozeile aus verwenden, damit Ihre Shell die Expansion vornimmt).

  • expiry-date: Kanonisiert durch Konvertierung von einer festen oder relativen Datumszeichenkette in einen Zeitstempel. Dieser Spezifizierer hat keine Auswirkung beim Setzen des Wertes.

  • color: Beim Abrufen eines Wertes, kanonisiert durch Konvertierung in eine ANSI-Farbesequenz. Beim Setzen eines Wertes wird eine Plausibilitätsprüfung durchgeführt, um sicherzustellen, dass der angegebene Wert als ANSI-Farbe kanonisiert werden kann, er wird jedoch unverändert geschrieben.

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

Historische Optionen zur Auswahl eines Typ-Spezifizierers. Bevorzugen Sie stattdessen --type (siehe oben).

--no-type

Hebt den zuvor gesetzten Typ-Spezifizierer auf (falls einer zuvor gesetzt war). Diese Option fordert git config auf, die abgerufene Variable nicht zu kanonisieren. --no-type hat keine Auswirkung ohne --type=<typ> oder --<typ>.

-z
--null

Für alle Optionen, die Werte und/oder Schlüssel ausgeben, beenden Sie Werte immer mit dem Nullzeichen (anstelle eines Zeilenumbruchs). Verwenden Sie stattdessen einen Zeilenumbruch als Trennzeichen zwischen Schlüssel und Wert. Dies ermöglicht eine sichere Analyse der Ausgabe, ohne z. B. durch Werte mit Zeilenumbrüchen verwirrt zu werden.

--name-only

Gibt nur die Namen der Konfigurationsvariablen für list oder get aus.

--show-names
--no-show-names

Bei get: Zeigt neben den Werten auch die Konfigurationsschlüssel an. Standard ist --no-show-names, es sei denn, --url wird angegeben und es gibt keine Unterabschnitte in <name>.

--show-origin

Ergänzt die Ausgabe aller abgefragten Konfigurationsoptionen um den Ursprungstyp (Datei, Standardeingabe, Blob, Kommandozeile) und den tatsächlichen Ursprung (Pfad der Konfigurationsdatei, Ref oder Blob-ID, falls zutreffend).

--show-scope

Ähnlich wie --show-origin, da es die Ausgabe aller abgefragten Konfigurationsoptionen um den Geltungsbereich dieses Wertes (worktree, local, global, system, command) ergänzt.

--get-colorbool <name> [<stdout-is-tty>]

Findet die Farbeinstellung für <name> (z.B. color.diff) und gibt "true" oder "false" aus. <stdout-is-tty> sollte entweder "true" oder "false" sein und wird berücksichtigt, wenn die Konfiguration "auto" besagt. Wenn <stdout-is-tty> fehlt, wird die Standardausgabe des Befehls selbst geprüft und mit Status 0 beendet, wenn Farbe verwendet werden soll, oder mit Status 1 andernfalls. Wenn die Farbeinstellung für name undefiniert ist, verwendet der Befehl color.ui als Fallback.

--includes
--no-includes

Beachtet include.*-Direktiven in Konfigurationsdateien beim Suchen nach Werten. Standardmäßig ist dies off, wenn eine bestimmte Datei angegeben wird (z.B. mit --file, --global, etc.) und on, wenn alle Konfigurationsdateien durchsucht werden.

--default <wert>

Bei Verwendung von get und wenn die angeforderte Variable nicht gefunden wird, verhält es sich so, als wäre <wert> der Wert, der dieser Variable zugewiesen wurde.

VERALTETE MODI

Die folgenden Modi wurden zugunsten von Unterbefehlen als veraltet erklärt. Es wird empfohlen, auf die neue Syntax zu migrieren.

git config <name>

Ersetzt durch git config get <name>.

git config <name> <wert> [<wert-muster>]

Ersetzt durch git config set [--value=<muster>] <name> <wert>.

-l
--list

Ersetzt durch git config list.

--get <name> [<wert-muster>]

Ersetzt durch git config get [--value=<muster>] <name>.

--get-all <name> [<wert-muster>]

Ersetzt durch git config get [--value=<muster>] --all <name>.

--get-regexp <name-regexp>

Ersetzt durch git config get --all --show-names --regexp <name-regexp>.

--get-urlmatch <name> <URL>

Ersetzt durch git config get --all --show-names --url=<URL> <name>.

--get-color <name> [<default>]

Ersetzt durch git config get --type=color [--default=<default>] <name>.

--add <name> <wert>

Ersetzt durch git config set --append <name> <wert>.

--unset <name> [<wert-muster>]

Ersetzt durch git config unset [--value=<muster>] <name>.

--unset-all <name> [<wert-muster>]

Ersetzt durch git config unset [--value=<muster>] --all <name>.

--rename-section <alter-name> <neuer-name>

Ersetzt durch git config rename-section <alter-name> <neuer-name>.

--remove-section <name>

Ersetzt durch git config remove-section <name>.

-e
--edit

Ersetzt durch git config edit.

KONFIGURATION

pager.config wird nur beim Auflisten der Konfiguration berücksichtigt, d.h. bei Verwendung von list oder get, die mehrere Ergebnisse zurückgeben können. Standardmäßig wird ein Pager verwendet.

DATEIEN

Standardmäßig liest git config Konfigurationsoptionen aus mehreren Dateien.

$(prefix)/etc/gitconfig

Systemweite Konfigurationsdatei.

$XDG_CONFIG_HOME/git/config
~/.gitconfig

Benutzerspezifische Konfigurationsdateien. Wenn die Umgebungsvariable XDG_CONFIG_HOME nicht gesetzt oder leer ist, wird $HOME/.config/ als $XDG_CONFIG_HOME verwendet.

Diese werden auch als "globale" Konfigurationsdateien bezeichnet. Wenn beide Dateien existieren, werden beide Dateien in der oben angegebenen Reihenfolge gelesen.

$GIT_DIR/config

Repository-spezifische Konfigurationsdatei.

$GIT_DIR/config.worktree

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

Sie können auch zusätzliche Konfigurationsparameter angeben, wenn Sie einen beliebigen Git-Befehl ausführen, indem Sie die Option -c verwenden. Weitere Informationen finden Sie in git[1].

Die Optionen werden aus allen diesen verfügbaren Dateien gelesen. Wenn die globalen oder systemweiten Konfigurationsdateien fehlen oder nicht lesbar sind, werden sie ignoriert. Wenn die Repository-Konfigurationsdatei fehlt oder nicht lesbar ist, schlägt git config mit einem nicht-null-Fehlercode fehl. Eine Fehlermeldung wird ausgegeben, wenn die Datei nicht lesbar ist, aber nicht, wenn sie fehlt.

Die Dateien werden in der oben angegebenen Reihenfolge gelesen, wobei der zuletzt gefundene Wert Vorrang vor früher gelesenen Werten hat. Wenn mehrere Werte genommen werden, werden alle Werte eines Schlüssels aus allen Dateien verwendet.

Standardmäßig werden Optionen nur in die Repository-spezifische Konfigurationsdatei geschrieben. Beachten Sie, dass dies auch Optionen wie set und unset betrifft. git config ändert immer nur eine Datei gleichzeitig.

Sie können die zu lesenden oder zu schreibenden Konfigurationsquellen begrenzen, indem Sie den Pfad einer Datei mit der Option --file angeben oder indem Sie einen Konfigurationsumfang mit --system, --global, --local oder --worktree angeben. Weitere Informationen finden Sie unter OPTIONEN oben.

GUIZMO

Jede Konfigurationsquelle fällt in einen Konfigurationsumfang. Die Umfänge sind:

system

$(prefix)/etc/gitconfig

global

$XDG_CONFIG_HOME/git/config

~/.gitconfig

local

$GIT_DIR/config

worktree

$GIT_DIR/config.worktree

command

GIT_CONFIG_{COUNT,KEY,VALUE} Umgebungsvariablen (siehe UMGEBUNG unten)

die Option -c

Mit Ausnahme von command entspricht jeder Umfang einer Kommandozeilenoption: --system, --global, --local, --worktree.

Beim Lesen von Optionen liest die Angabe eines Umfangs nur Optionen aus den Dateien innerhalb dieses Umfangs. Beim Schreiben von Optionen schreibt die Angabe eines Umfangs in die Dateien innerhalb dieses Umfangs (anstelle der Repository-spezifischen Konfigurationsdatei). Siehe OPTIONEN oben für eine vollständige Beschreibung.

Die meisten Konfigurationsoptionen werden unabhängig vom Umfang, in dem sie definiert sind, beachtet, aber einige Optionen werden nur in bestimmten Umfängen beachtet. Siehe die jeweilige Dokumentation der Option für die vollständigen Details.

Geschützte Konfiguration

Geschützte Konfiguration bezieht sich auf die Umfänge system, global und command. Aus Sicherheitsgründen werden bestimmte Optionen nur beachtet, wenn sie in der geschützten Konfiguration angegeben sind, und andernfalls ignoriert.

Git behandelt diese Umfänge so, als ob sie vom Benutzer oder einem vertrauenswürdigen Administrator gesteuert würden. Da ein Angreifer, der diese Umfänge kontrolliert, erheblichen Schaden anrichten kann, ohne Git zu verwenden, wird davon ausgegangen, dass die Umgebung des Benutzers diese Umfänge vor Angreifern schützt.

UMGEBUNG

GIT_CONFIG_GLOBAL
GIT_CONFIG_SYSTEM

Nimmt die Konfiguration aus den angegebenen Dateien anstelle der globalen oder systemweiten Konfiguration. Siehe git[1] für Details.

GIT_CONFIG_NOSYSTEM

Überspringt das Lesen von Einstellungen aus der systemweiten Datei $(prefix)/etc/gitconfig. Siehe git[1] für Details.

Siehe auch DATEIEN.

GIT_CONFIG_COUNT
GIT_CONFIG_KEY_<n>
GIT_CONFIG_VALUE_<n>

Wenn GIT_CONFIG_COUNT auf eine positive Zahl gesetzt ist, werden alle Umgebungspaare GIT_CONFIG_KEY_<n> und GIT_CONFIG_VALUE_<n> bis zu dieser Zahl zur Laufzeitkonfiguration des Prozesses hinzugefügt. Die Konfigurationspaare sind nullindiziert. Ein fehlender Schlüssel oder Wert wird als Fehler behandelt. Ein leeres GIT_CONFIG_COUNT wird wie GIT_CONFIG_COUNT=0 behandelt, d.h. es werden keine Paare verarbeitet. Diese Umgebungsvariablen überschreiben Werte in Konfigurationsdateien, werden aber von expliziten Optionen überschrieben, die über git -c übergeben werden.

Dies ist nützlich für Fälle, in denen Sie mehrere Git-Befehle mit einer gemeinsamen Konfiguration starten möchten, aber nicht auf eine Konfigurationsdatei angewiesen sein können, z. B. beim Schreiben von Skripten.

GIT_CONFIG

Wenn keine Option --file an git config übergeben wird, wird die von GIT_CONFIG angegebene Datei wie über --file übergeben behandelt. Diese Variable hat keine Auswirkung auf andere Git-Befehle und dient hauptsächlich der historischen Kompatibilität; es gibt im Allgemeinen keinen Grund, sie anstelle der Option --file zu verwenden.

BEISPIELE

Gegeben sei eine .git/config wie diese

#
# This is the config file, and
# a '#' or ';' character indicates
# a comment
#

; core variables
[core]
	; Don't trust file modes
	filemode = false

; Our diff algorithm
[diff]
	external = /usr/local/bin/diff-wrapper
	renames = true

; Proxy settings
[core]
	gitproxy=proxy-command for kernel.org
	gitproxy=default-proxy ; for all the rest

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

Sie können filemode auf true setzen mit

% git config set core.filemode true

Die hypothetischen Proxy-Befehlseinträge haben tatsächlich einen Suffix, um zu unterscheiden, auf welche URL sie sich beziehen. So ändern Sie den Eintrag für kernel.org zu "ssh".

% git config set --value='for kernel.org$' core.gitproxy '"ssh" for kernel.org'

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

Um den Eintrag für renames zu löschen, tun Sie Folgendes:

% git config unset diff.renames

Wenn Sie einen Eintrag für eine Mehrfachvariable (wie core.gitproxy oben) löschen möchten, müssen Sie ein Regex angeben, das den Wert genau einer Zeile entspricht.

Um den Wert für einen bestimmten Schlüssel abzufragen, tun Sie Folgendes:

% git config get core.filemode

oder um eine Mehrfachvariable abzufragen

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

Wenn Sie alle Werte für eine Mehrfachvariable wissen möchten, tun Sie Folgendes:

% git config get --all --show-names core.gitproxy

Wenn Sie gefährlich leben wollen, können Sie alle core.gitproxy durch eine neue ersetzen mit

% git config set --all core.gitproxy ssh

Wenn Sie jedoch wirklich nur die Zeile für den Standardproxy ersetzen möchten, d.h. die ohne "for …​" Suffix, tun Sie etwas wie dies:

% git config set --value='! for ' core.gitproxy ssh

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

% git config set --value='[!]' section.key value

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

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

Ein Beispiel zur Verwendung von benutzerdefinierter Farbe aus der Konfiguration in Ihrem Skript

#!/bin/sh
WS=$(git config get --type=color --default="blue reverse" color.diff.whitespace)
RESET=$(git config get --type=color --default="reset" "")
echo "${WS}your whitespace color or blue reverse${RESET}"

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

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

KONFIGURATIONS DATEI

Die Git-Konfigurationsdatei enthält eine Reihe von Variablen, die das Verhalten der Git-Befehle beeinflussen. Die Dateien .git/config und optional config.worktree (siehe Abschnitt "CONFIGURATION FILE" von git-worktree[1]) in jedem Repository werden verwendet, um die Konfiguration für dieses Repository zu speichern, und $HOME/.gitconfig wird verwendet, um eine benutzerspezifische Konfiguration als Fallback-Werte für die Datei .git/config zu speichern. Die Datei /etc/gitconfig kann verwendet werden, um eine systemweite Standardkonfiguration zu speichern.

Die Konfigurationsvariablen werden sowohl von den Git-Plumbing- als auch von den Porcelain-Befehlen verwendet. Die Variablen sind in Abschnitte unterteilt, wobei der vollständig qualifizierte Variablenname der Variable selbst das letzte durch Punkte getrennte Segment ist und der Abschnittsname alles vor dem letzten Punkt ist. Die Variablennamen sind nicht case-sensitiv, erlauben nur alphanumerische Zeichen und - und müssen mit einem alphabetischen Zeichen beginnen. Einige Variablen können mehrmals vorkommen; wir sagen dann, dass die Variable mehrwertig ist.

Syntax

Die Syntax ist ziemlich flexibel und permissiv. Whitespace-Zeichen, die in diesem Kontext das Leerzeichen (SP) und die horizontale Tabulierung (HT) sind, werden größtenteils ignoriert. Die Zeichen # und ; beginnen Kommentare bis zum Zeilenende. Leere Zeilen werden ignoriert.

Die Datei besteht aus Abschnitten und Variablen. Ein Abschnitt beginnt mit dem Namen des Abschnitts in eckigen Klammern und dauert bis zum Beginn des nächsten Abschnitts. Abschnittsnamen sind nicht case-sensitiv. Nur alphanumerische Zeichen, - und . sind in Abschnittsnamen erlaubt. Jede Variable muss zu einem Abschnitt gehören, was bedeutet, dass vor der ersten Einstellung einer Variablen eine Abschnittsüberschrift vorhanden sein muss.

Abschnitte können weiter in Unterabschnitte unterteilt werden. Um einen Unterabschnitt zu beginnen, setzen Sie seinen Namen in doppelte Anführungszeichen, durch ein Leerzeichen vom Abschnittsnamen getrennt, in der Abschnittsüberschrift, wie im folgenden Beispiel

	[section "subsection"]

Unterabschnittsnamen sind case-sensitiv und können beliebige Zeichen außer Zeilenumbruch und Nullbyte enthalten. Doppelte Anführungszeichen " und Backslashes können durch Escaping als \" und \\ eingefügt werden. Backslashes, die anderen Zeichen vorangestellt sind, werden beim Lesen verworfen; zum Beispiel wird \t als t und \0 als 0 gelesen. Abschnittsüberschriften können sich nicht über mehrere Zeilen erstrecken. Variablen können direkt zu einem Abschnitt oder zu einem bestimmten Unterabschnitt gehören. Sie können [section] haben, wenn Sie [section "subsection"] haben, aber Sie müssen es nicht.

Es gibt auch eine veraltete Syntax [section.subsection]. Mit dieser Syntax wird der Unterabschnittsname in Kleinbuchstaben umgewandelt und auch case-sensitiv verglichen. Diese Unterabschnittsnamen folgen denselben Einschränkungen wie Abschnittsnamen.

Alle anderen Zeilen (und der Rest der Zeile nach der Abschnittsüberschrift) werden als Variablenzuweisungen erkannt, in der Form name = wert (oder einfach name, was eine Kurzform ist, um zu sagen, dass die Variable der boolesche "true" ist). Die Variablennamen sind nicht case-sensitiv, erlauben nur alphanumerische Zeichen und - und müssen mit einem alphabetischen Zeichen beginnen.

Whitespace-Zeichen, die name, = und wert umgeben, werden verworfen. Interne Whitespace-Zeichen innerhalb von wert werden wörtlich beibehalten. Kommentare, die mit # oder ; beginnen und bis zum Zeilenende reichen, werden verworfen. Eine Zeile, die einen Wert definiert, kann mit einem Backslash (\) am Ende zur nächsten Zeile fortgesetzt werden; der Backslash und die Zeilenende-Zeichen werden verworfen.

Wenn wert führende oder nachgestellte Whitespace-Zeichen enthalten muss, muss er in doppelte Anführungszeichen (") eingeschlossen werden. Innerhalb von doppelten Anführungszeichen müssen doppelte Anführungszeichen (") und Backslashes (\) escaped werden: Verwenden Sie \" für " und \\ für \.

Die folgenden Escape-Sequenzen (neben \" und \\) werden erkannt: \n für Zeilenumbruchzeichen (NL), \t für horizontale Tabulierung (HT, TAB) und \b für Rückschritt (BS). Andere Zeichen-Escape-Sequenzen (einschließlich Oktal-Escape-Sequenzen) sind ungültig.

Includes

Die Abschnitte include und includeIf erlauben es Ihnen, Konfigurationsdirektiven aus einer anderen Quelle einzubinden. Diese Abschnitte verhalten sich bis auf die Ausnahme, dass includeIf-Abschnitte ignoriert werden können, wenn ihre Bedingung nicht zu true ausgewertet wird, identisch. Siehe "Bedingte Includes" unten.

Sie können eine Konfigurationsdatei aus einer anderen includen, indem Sie die spezielle Variable include.path (oder includeIf.*.path) auf den Namen der einzubindenden Datei setzen. Die Variable nimmt einen Pfadnamen als Wert an und unterliegt der Tilde-Expansion. Diese Variablen können mehrmals angegeben werden.

Der Inhalt der inkludierten Datei wird sofort eingefügt, als ob er sich an der Stelle der Include-Direktive befunden hätte. Wenn der Wert der Variablen ein relativer Pfad ist, wird der Pfad als relativ zur Konfigurationsdatei betrachtet, in der die Include-Direktive gefunden wurde. Siehe unten für Beispiele.

Bedingte Includes

Sie können eine Konfigurationsdatei bedingt aus einer anderen includen, indem Sie die Variable includeIf.<condition>.path auf den Namen der einzubindenden Datei setzen.

Die Bedingung beginnt mit einem Schlüsselwort, gefolgt von einem Doppelpunkt und einigen Daten, deren Format und Bedeutung vom Schlüsselwort abhängt. Unterstützte Schlüsselwörter sind

gitdir

Die Daten, die dem Schlüsselwort gitdir und einem Doppelpunkt folgen, werden als Glob-Muster verwendet. Wenn der Speicherort des .git-Verzeichnisses mit dem Muster übereinstimmt, ist die Include-Bedingung erfüllt.

Der .git-Speicherort kann automatisch ermittelt oder aus der Umgebungsvariable $GIT_DIR stammen. Wenn das Repository über eine .git-Datei automatisch ermittelt wird (z. B. von Submodulen oder einem verknüpften Worktree), ist der .git-Speicherort der endgültige Speicherort, an dem sich das .git-Verzeichnis befindet, nicht, wo sich die .git-Datei befindet.

Das Muster kann Standard-Globbing-Wildcards und zwei zusätzliche, **/ und /**, enthalten, die mehrere Pfadkomponenten abgleichen können. Bitte siehe gitignore[5] für Details. Zur Bequemlichkeit

  • Wenn das Muster mit ~/ beginnt, wird ~ durch den Inhalt der Umgebungsvariable HOME ersetzt.

  • Wenn das Muster mit ./ beginnt, wird es durch das Verzeichnis ersetzt, das die aktuelle Konfigurationsdatei enthält.

  • Wenn das Muster weder mit ~/, ./ noch mit / beginnt, wird automatisch **/ vorangestellt. Zum Beispiel wird das Muster foo/bar zu **/foo/bar und würde /any/path/to/foo/bar abgleichen.

  • Wenn das Muster mit / endet, wird automatisch ** hinzugefügt. Zum Beispiel wird das Muster foo/ zu foo/**. Mit anderen Worten, es gleicht "foo" und alles darin rekursiv ab.

gitdir/i

Dies ist dasselbe wie gitdir, mit der Ausnahme, dass die Übereinstimmung case-insensitiv erfolgt (z. B. auf case-insensitiven Dateisystemen).

onbranch

Die Daten, die dem Schlüsselwort onbranch und einem Doppelpunkt folgen, werden als Muster mit Standard-Globbing-Wildcards und zwei zusätzlichen, **/ und /**, interpretiert, die mehrere Pfadkomponenten abgleichen können. Wenn wir uns in einem Worktree befinden, dessen Name des aktuell ausgecheckten Branches mit dem Muster übereinstimmt, ist die Include-Bedingung erfüllt.

Wenn das Muster mit / endet, wird automatisch ** hinzugefügt. Zum Beispiel wird das Muster foo/ zu foo/**. Mit anderen Worten, es gleicht alle Branches ab, die mit foo/ beginnen. Dies ist nützlich, wenn Ihre Branches hierarchisch organisiert sind und Sie eine Konfiguration auf alle Branches dieser Hierarchie anwenden möchten.

hasconfig:remote.*.url

Die Daten, die diesem Schlüsselwort und einem Doppelpunkt folgen, werden als Muster mit Standard-Globbing-Wildcards und zwei zusätzlichen, **/ und /**, interpretiert, die mehrere Komponenten abgleichen können. Beim ersten Auftreten dieses Schlüsselworts werden die restlichen Konfigurationsdateien nach Remote-URLs durchsucht (ohne Werte anzuwenden). Wenn mindestens eine Remote-URL existiert, die mit diesem Muster übereinstimmt, ist die Include-Bedingung erfüllt.

Dateien, die durch diese Option (direkt oder indirekt) inkludiert werden, dürfen keine Remote-URLs enthalten.

Beachten Sie, dass im Gegensatz zu anderen includeIf-Bedingungen die Auflösung dieser Bedingung auf Informationen basiert, die zum Zeitpunkt des Lesens der Bedingung noch nicht bekannt sind. Ein typischer Anwendungsfall ist die Anwesenheit dieser Option als systemweite oder globale Konfiguration und die Remote-URL in einer lokalen Konfiguration; daher die Notwendigkeit, beim Auflösen dieser Bedingung vorauszulesen. Um das Henne-Ei-Problem zu vermeiden, bei dem potenziell inkludierte Dateien beeinflussen können, ob solche Dateien potenziell inkludiert werden, bricht Git den Zyklus, indem es verbietet, dass diese Dateien die Auflösung dieser Bedingungen beeinflussen (und somit das Deklarieren von Remote-URLs verbietet).

Was die Benennung dieses Schlüsselworts betrifft, so dient es der Vorwärtskompatibilität mit einem Benennungsschema, das mehr variablebasierte Include-Bedingungen unterstützt, aber derzeit unterstützt Git nur das exakt beschriebene Schlüsselwort.

Einige weitere Hinweise zum Abgleichen über gitdir und gitdir/i

  • Symlinks in $GIT_DIR werden vor dem Abgleich nicht aufgelöst.

  • Sowohl die Symlink- & Realpath-Versionen von Pfaden werden außerhalb von $GIT_DIR abgeglichen. Z.B. wenn ~/git ein Symlink zu /mnt/storage/git ist, werden sowohl gitdir:~/git als auch gitdir:/mnt/storage/git abgeglichen.

    Dies war bei der ersten Veröffentlichung dieses Features in v2.13.0 nicht der Fall, die nur die Realpath-Version abglich. Konfigurationen, die mit der ersten Veröffentlichung dieses Features kompatibel sein sollen, müssen entweder nur die Realpath-Version oder beide Versionen angeben.

  • Beachten Sie, dass "../" nicht speziell ist und wörtlich abgeglichen wird, was unwahrscheinlich ist, was Sie wollen.

Beispiel

# Core variables
[core]
	; Don't trust file modes
	filemode = false

# Our diff algorithm
[diff]
	external = /usr/local/bin/diff-wrapper
	renames = true

[branch "devel"]
	remote = origin
	merge = refs/heads/devel

# Proxy settings
[core]
	gitProxy="ssh" for "kernel.org"
	gitProxy=default-proxy ; for the rest

[include]
	path = /path/to/foo.inc ; include by absolute path
	path = foo.inc ; find "foo.inc" relative to the current file
	path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory

; include if $GIT_DIR is /path/to/foo/.git
[includeIf "gitdir:/path/to/foo/.git"]
	path = /path/to/foo.inc

; include for all repositories inside /path/to/group
[includeIf "gitdir:/path/to/group/"]
	path = /path/to/foo.inc

; include for all repositories inside $HOME/to/group
[includeIf "gitdir:~/to/group/"]
	path = /path/to/foo.inc

; relative paths are always relative to the including
; file (if the condition is true); their location is not
; affected by the condition
[includeIf "gitdir:/path/to/group/"]
	path = foo.inc

; include only if we are in a worktree where foo-branch is
; currently checked out
[includeIf "onbranch:foo-branch"]
	path = foo.inc

; include only if a remote with the given URL exists (note
; that such a URL may be provided later in a file or in a
; file read after this file is read, as seen in this example)
[includeIf "hasconfig:remote.*.url:https://example.com/**"]
	path = foo.inc
[remote "origin"]
	url = https://example.com/git

Werte

Werte vieler Variablen werden als einfacher String behandelt, aber es gibt Variablen, die Werte bestimmter Typen annehmen, und es gibt Regeln, wie diese geschrieben werden.

boolesch

Wenn eine Variable angibt, einen booleschen Wert anzunehmen, werden viele Synonyme für true und false akzeptiert; diese sind alle case-insensitiv.

wahr

Boolesche True-Literale sind yes, on, true und 1. Außerdem wird eine Variable, die ohne = <wert> definiert ist, als true angenommen.

falsch

Boolesche False-Literale sind no, off, false, 0 und der leere String.

Bei der Konvertierung eines Wertes in seine kanonische Form unter Verwendung des Typenspezifizierers --type=bool stellt git config sicher, dass die Ausgabe "true" oder "false" (in Kleinbuchstaben geschrieben) ist.

ganzzahlig

Der Wert vieler Variablen, die verschiedene Größen angeben, kann mit k, M,…​ enden, um "skaliere die Zahl um 1024", "um 1024x1024" usw. zu bedeuten.

farbe

Der Wert einer Variablen, die eine Farbe annimmt, ist eine Liste von Farben (höchstens zwei, eine für Vordergrund und eine für Hintergrund) und Attributen (beliebige Anzahl), durch Leerzeichen getrennt.

Die akzeptierten Grundfarben sind normal, black, red, green, yellow, blue, magenta, cyan, white und default. Die erste angegebene Farbe ist der Vordergrund; die zweite ist der Hintergrund. Alle Grundfarben außer normal und default haben eine helle Variante, die durch Voranstellen von bright vor der Farbe angegeben werden kann, z. B. brightred.

Die Farbe normal verändert die Farbe nicht. Sie ist dasselbe wie ein leerer String, kann aber als Vordergrundfarbe verwendet werden, wenn nur eine Hintergrundfarbe angegeben wird (z. B. "normal red").

Die Farbe default setzt die Farbe explizit auf den Terminalstandard zurück, z. B. um einen leeren Hintergrund anzugeben. Obwohl es je nach Terminal variiert, ist dies normalerweise nicht dasselbe wie die Einstellung auf "white black".

Farben können auch als Zahlen zwischen 0 und 255 angegeben werden; diese verwenden den ANSI 256-Farbenmodus (beachten Sie jedoch, dass nicht alle Terminals dies unterstützen). Wenn Ihr Terminal dies unterstützt, können Sie auch 24-Bit-RGB-Werte als Hexadezimalzahl angeben, wie #ff0ab3, oder 12-Bit-RGB-Werte wie #f1b, was dem 24-Bit-Farbe #ff11bb entspricht.

Die akzeptierten Attribute sind bold, dim, ul, blink, reverse, italic und strike (für durchgestrichene oder "durchgestrichene" Buchstaben). Die Position von Attributen in Bezug auf die Farben (davor, danach oder dazwischen) spielt keine Rolle. Bestimmte Attribute können durch Voranstellen von no oder no- (z. B. noreverse, no-ul usw.) ausgeschaltet werden.

Das Pseudo-Attribut reset setzt alle Farben und Attribute zurück, bevor die angegebene Farbgebung angewendet wird. Zum Beispiel führt reset green zu einem grünen Vordergrund und einem Standardhintergrund ohne aktive Attribute.

Ein leerer Farbstring erzeugt keinen Farbeffekt. Dies kann verwendet werden, um bestimmte Elemente nicht zu färben, ohne die Farbe vollständig zu deaktivieren.

Für Git's vordefinierte Farb-Slots sollen die Attribute am Anfang jedes Elements der farbigen Ausgabe zurückgesetzt werden. Das Setzen von color.decorate.branch auf black färbt diesen Branch-Namen in einem einfachen black, auch wenn das vorherige Element in derselben Ausgabespalte (z. B. die öffnende Klammer vor der Liste der Branch-Namen in der log --decorate-Ausgabe) mit bold oder einem anderen Attribut gefärbt ist. Benutzerdefinierte Log-Formate können jedoch kompliziertere und geschichtete Färbungen vornehmen, und die negierten Formen können dort nützlich sein.

Pfadname

Eine Variable, die einen Pfadnamenwert annimmt, kann einen String erhalten, der mit "~/" oder "~user/" beginnt, und die übliche Tilde-Expansion wird auf einen solchen String angewendet: ~/ wird zum Wert von $HOME erweitert, und ~user/ zum Home-Verzeichnis des angegebenen Benutzers.

Wenn ein Pfad mit %(prefix)/ beginnt, wird der Rest als Pfad relativ zum "Runtime Prefix" von Git interpretiert, d. h. relativ zum Speicherort, an dem Git selbst installiert wurde. Zum Beispiel bezieht sich %(prefix)/bin/ auf das Verzeichnis, in dem die Git-Executable selbst lebt. Wenn Git ohne Runtime-Prefix-Unterstützung kompiliert wurde, wird stattdessen der eingebaute Prefix eingesetzt. In dem unwahrscheinlichen Fall, dass ein literaler Pfad angegeben werden muss, der nicht expandiert werden soll, muss er mit ./ davor präfigiert werden, so: ./%(prefix)/bin.

Wenn mit :(optional) präfigiert, wird die Konfigurationsvariable so behandelt, als ob sie nicht existiert, wenn der genannte Pfad nicht existiert.

Variablen

Beachten Sie, dass diese Liste nicht erschöpfend und nicht unbedingt vollständig ist. Für Befehlsspezifische Variablen finden Sie eine detailliertere Beschreibung auf der entsprechenden Handbuchseite.

Andere Git-bezogene Tools können und verwenden ihre eigenen Variablen. Wenn Sie neue Variablen für die Verwendung in Ihrem eigenen Tool erfinden, stellen Sie sicher, dass ihre Namen nicht mit denen kollidieren, die von Git selbst und anderen beliebten Tools verwendet werden, und beschreiben Sie sie in Ihrer Dokumentation.

add.ignoreErrors
add.ignore-errors (veraltet)

Weist git add an, mit dem Hinzufügen von Dateien fortzufahren, wenn einige Dateien aufgrund von Indexierungsfehlern nicht hinzugefügt werden können. Entspricht der Option --ignore-errors von git-add[1]. add.ignore-errors ist veraltet, da sie nicht der üblichen Namenskonvention für Konfigurationsvariablen folgt.

advice.*

Diese Variablen steuern verschiedene optionale Hilfemeldungen, die dazu dienen, neue Benutzer zu unterstützen. Wenn sie unkonfiguriert bleiben, gibt Git die Meldung zusammen mit Anweisungen aus, wie sie unterdrückt werden kann. Sie können Git mitteilen, dass Sie das Problem verstanden haben und keine bestimmte Hilfemeldung mehr benötigen, indem Sie die entsprechende Variable auf false setzen.

Da sie dazu dienen, menschliche Benutzer zu unterstützen, werden diese Meldungen auf Standardfehler ausgegeben. Wenn Tools, die Git als Subprozess ausführen, sie störend finden, können sie GIT_ADVICE=0 in der Umgebung setzen, um alle Ratschlagsmeldungen zu unterdrücken.

addEmbeddedRepo

Wird angezeigt, wenn der Benutzer versehentlich ein Git-Repository innerhalb eines anderen hinzufügt.

addEmptyPathspec

Wird angezeigt, wenn der Benutzer git add ausführt, ohne den Pathspec-Parameter anzugeben.

addIgnoredFile

Wird angezeigt, wenn der Benutzer versucht, eine ignorierte Datei zum Index hinzuzufügen.

amWorkDir

Wird angezeigt, wenn git-am[1] fehlschlägt, eine Patch-Datei anzuwenden, um dem Benutzer den Speicherort der Datei mitzuteilen.

ambiguousFetchRefspec

Wird angezeigt, wenn eine Fetch-Refspec für mehrere Remotes in denselben Remote-Tracking-Branch-Namensraum abgebildet wird und das Einrichten des Branch-Trackings fehlschlägt.

checkoutAmbiguousRemoteBranchName

Wird angezeigt, wenn das Argument für git-checkout[1] und git-switch[1] mehrdeutig auf einen Remote-Tracking-Branch auf mehr als einem Remote abgebildet wird, in Situationen, in denen ein eindeutiges Argument andernfalls einen Remote-Tracking-Branch ausgecheckt hätte. Siehe die Konfigurationsvariable checkout.defaultRemote, wie man einen bestimmten Remote als Standard für Situationen setzt, in denen dieser Ratschlag ausgegeben würde.

commitBeforeMerge

Wird angezeigt, wenn git-merge[1] sich weigert zu mergen, um lokale Änderungen nicht zu überschreiben.

detachedHead

Wird angezeigt, wenn der Benutzer git-switch[1] oder git-checkout[1] verwendet, um in den Detached-HEAD-Zustand zu wechseln, um dem Benutzer mitzuteilen, wie man danach einen lokalen Branch erstellt.

diverging

Wird angezeigt, wenn ein Fast-Forward nicht möglich ist.

fetchShowForcedUpdates

Wird angezeigt, wenn git-fetch[1] lange zur Berechnung von erzwungenen Aktualisierungen nach Ref-Aktualisierungen braucht oder um zu warnen, dass die Prüfung deaktiviert ist.

forceDeleteBranch

Wird angezeigt, wenn der Benutzer versucht, einen nicht vollständig gemergten Branch zu löschen, ohne die Option force zu setzen.

ignoredHook

Wird angezeigt, wenn ein Hook ignoriert wird, weil der Hook nicht als ausführbar gesetzt ist.

implicitIdentity

Wird angezeigt, wenn die Informationen des Benutzers vom System-Benutzernamen und Domänennamen erraten werden, um dem Benutzer mitzuteilen, wie er seine Identitätskonfiguration einstellen kann.

mergeConflict

Wird angezeigt, wenn verschiedene Befehle wegen Konflikten stoppen.

nestedTag

Wird angezeigt, wenn ein Benutzer versucht, ein Tag-Objekt rekursiv zu taggen.

pushAlreadyExists

Wird angezeigt, wenn git-push[1] eine Aktualisierung ablehnt, die nicht für Fast-Forwarding in Frage kommt (z. B. ein Tag).

pushFetchFirst

Wird angezeigt, wenn git-push[1] eine Aktualisierung ablehnt, die versucht, einen Remote-Ref zu überschreiben, der auf ein Objekt zeigt, das wir nicht haben.

pushNeedsForce

Wird angezeigt, wenn git-push[1] eine Aktualisierung ablehnt, die versucht, einen Remote-Ref zu überschreiben, der auf ein Objekt zeigt, das kein Commit-ish ist, oder den Remote-Ref auf ein Objekt zeigen lässt, das kein Commit-ish ist.

pushNonFFCurrent

Wird angezeigt, wenn git-push[1] aufgrund einer Nicht-Fast-Forward-Aktualisierung des aktuellen Branches fehlschlägt.

pushNonFFMatching

Wird angezeigt, wenn der Benutzer git-push[1] ausgeführt und explizit "matching refs" gepusht hat (d. h. : verwendet oder einen Refspec angegeben hat, der nicht der aktuelle Branch ist) und dies zu einem Nicht-Fast-Forward-Fehler führte.

pushRefNeedsUpdate

Wird angezeigt, wenn git-push[1] eine erzwungene Aktualisierung eines Branches ablehnt, wenn dessen Remote-Tracking-Ref Aktualisierungen enthält, die wir lokal nicht haben.

pushUnqualifiedRefname

Wird angezeigt, wenn git-push[1] aufhört zu versuchen, anhand der Quell- und Ziel-Refs zu erraten, in welchem Remote-Ref-Namensraum die Quelle gehört, aber wir können dem Benutzer trotzdem vorschlagen, zu refs/heads/* oder refs/tags/* zu pushen, basierend auf dem Typ des Quellobjekts.

pushUpdateRejected

Setzen Sie diese Variable auf false, wenn Sie pushNonFFCurrent, pushNonFFMatching, pushAlreadyExists, pushFetchFirst, pushNeedsForce und pushRefNeedsUpdate gleichzeitig deaktivieren möchten.

rebaseTodoError

Wird angezeigt, wenn nach dem Bearbeiten der Rebase-Todo-Liste ein Fehler auftritt.

refSyntax

Wird angezeigt, wenn der Benutzer einen ungültigen Ref-Namen angibt, um den Benutzer über die Dokumentation der Ref-Syntax zu informieren.

resetNoRefresh

Wird angezeigt, wenn git-reset[1] mehr als 2 Sekunden zum Aktualisieren des Index nach dem Reset benötigt, um dem Benutzer mitzuteilen, dass er die Option --no-refresh verwenden kann.

resolveConflict

Wird von verschiedenen Befehlen angezeigt, wenn Konflikte die Ausführung des Vorgangs verhindern.

rmHints

Wird bei einem Fehler in der Ausgabe von git-rm[1] angezeigt, um Anweisungen zu geben, wie vom aktuellen Zustand aus fortzufahren ist.

sequencerInUse

Wird angezeigt, wenn ein Sequenzer-Befehl bereits ausgeführt wird.

skippedCherryPicks

Wird angezeigt, wenn git-rebase[1] einen Commit überspringt, der bereits auf den Upstream-Branch gemerged (cherry-picked) wurde.

sparseIndexExpanded

Wird angezeigt, wenn ein Sparse-Index zu einem vollständigen Index erweitert wird, was wahrscheinlich auf eine unerwartete Menge von Dateien außerhalb des Sparse-Checkouts zurückzuführen ist.

statusAheadBehind

Wird angezeigt, wenn git-status[1] die Ahead/Behind-Zählungen für einen lokalen Ref im Vergleich zu seinem Remote-Tracking-Ref berechnet und diese Berechnung länger als erwartet dauert. Wird nicht angezeigt, wenn status.aheadBehind false ist oder die Option --no-ahead-behind angegeben wird.

statusHints

Zeigt Anweisungen an, wie vom aktuellen Zustand in der Ausgabe von git-status[1], in der Vorlage beim Schreiben von Commit-Nachrichten in git-commit[1] und in der Hilfemeldung von git-switch[1] oder git-checkout[1] beim Wechseln von Branches fortzufahren ist.

statusUoption

Wird angezeigt, wenn git-status[1] mehr als 2 Sekunden zur Enumeration von untracked Dateien benötigt, um dem Benutzer mitzuteilen, dass er die Option -u verwenden kann.

submoduleAlternateErrorStrategyDie

Wird angezeigt, wenn eine auf "die" konfigurierte Option submodule.alternateErrorStrategy einen fatalen Fehler verursacht.

submoduleMergeConflict

Ratschlag, der angezeigt wird, wenn ein nicht-trivialer Submodul-Merge-Konflikt auftritt.

submodulesNotUpdated

Wird angezeigt, wenn ein Benutzer einen Submodulbefehl ausführt, der fehlschlägt, weil git submodule update --init nicht ausgeführt wurde.

suggestDetachingHead

Angezeigt, wenn git-switch[1] sich weigert, HEAD zu lösen, ohne die explizite Option --detach.

updateSparsePath

Angezeigt, wenn entweder git-add[1] oder git-rm[1] aufgefordert wird, Indexeinträge außerhalb des aktuellen Sparse-Checkouts zu aktualisieren.

waitingForEditor

Angezeigt, wenn Git auf die Eingabe des Editors wartet. Relevant, wenn z.B. der Editor nicht im Terminal gestartet wird.

worktreeAddOrphan

Angezeigt, wenn der Benutzer versucht, einen Worktree aus einer ungültigen Referenz zu erstellen, um dem Benutzer zu erklären, wie stattdessen ein neuer, ungeborener Branch erstellt werden kann.

alias.*

Befehlsealiase für den Wrapper-Befehl git[1] - z.B. nach der Definition von alias.last = cat-file commit HEAD ist der Aufruf git last äquivalent zu git cat-file commit HEAD. Um Verwechslungen und Probleme bei der Verwendung von Skripten zu vermeiden, werden Aliase, die bestehende Git-Befehle verdecken, ignoriert, mit Ausnahme von veralteten Befehlen. Argumente werden durch Leerzeichen getrennt, die übliche Shell-Quoting und -Escaping werden unterstützt. Ein Paar von Anführungszeichen oder ein Backslash können verwendet werden, um sie zu quoten.

Beachten Sie, dass das erste Wort eines Alias nicht notwendigerweise ein Befehl sein muss. Es kann eine Befehlszeilenoption sein, die in den Aufruf von git übergeben wird. Insbesondere ist dies nützlich, wenn es mit -c verwendet wird, um einmalige Konfigurationen zu übergeben, oder mit -p, um die Paginierung zu erzwingen. Zum Beispiel kann loud-rebase = -c commit.verbose=true rebase so definiert werden, dass git loud-rebase äquivalent zu git -c commit.verbose=true rebase ist. Ebenso wäre ps = -p status ein hilfreicher Alias, da git ps die Ausgabe von git status paginiert, wo der ursprüngliche Befehl dies nicht tut.

Wenn der Alias-Expansion ein Ausrufezeichen vorangestellt ist, wird sie als Shell-Befehl behandelt. Zum Beispiel, wenn alias.new = !gitk --all --not ORIG_HEAD definiert ist, ist der Aufruf git new äquivalent zur Ausführung des Shell-Befehls gitk --all --not ORIG_HEAD. Beachten Sie

  • Shell-Befehle werden vom übergeordneten Verzeichnis eines Repositorys aus ausgeführt, was nicht unbedingt das aktuelle Verzeichnis sein muss.

  • GIT_PREFIX wird so gesetzt, wie er durch Ausführung von git rev-parse --show-prefix aus dem ursprünglichen aktuellen Verzeichnis zurückgegeben wird. Siehe git-rev-parse[1].

  • Shell-Befehlsaliase erhalten immer alle zusätzlichen Argumente, die an die Git-Befehlszeile übergeben werden, als positionelle Argumente.

    • Vorsicht ist geboten, wenn Ihr Shell-Alias ein "One-Liner"-Skript mit mehreren Befehlen (z. B. in einer Pipeline) ist, auf mehrere Argumente verweist oder ansonsten nicht in der Lage ist, positionelle Argumente zu verarbeiten, die am Ende hinzugefügt werden. Zum Beispiel: alias.cmd = "!echo $1 | grep $2" aufgerufen als git cmd 1 2 wird ausgeführt als echo $1 | grep $2 1 2, was nicht das ist, was Sie wollen.

    • Eine praktische Methode, dies zu handhaben, ist, Ihre Skriptoperationen in einer Inline-Funktion zu schreiben, die dann mit beliebigen Argumenten von der Befehlszeile aufgerufen wird. Zum Beispiel wird alias.cmd = "!c() { echo $1 | grep $2 ; }; c" das vorherige Beispiel korrekt ausführen.

    • Das Setzen von GIT_TRACE=1 kann Ihnen helfen, den für Ihren Alias ausgeführten Befehl zu debuggen.

am.keepcr

Wenn wahr, ruft git-am git-mailsplit für Patches im mbox-Format mit dem Parameter --keep-cr auf. In diesem Fall wird git-mailsplit \r nicht von Zeilen entfernen, die mit \r\n enden. Kann überschrieben werden, indem --no-keep-cr von der Befehlszeile angegeben wird. Siehe git-am[1], git-mailsplit[1].

am.threeWay

Standardmäßig schlägt git am fehl, wenn der Patch nicht sauber angewendet werden kann. Wenn dieser Wert auf true gesetzt ist, weist diese Einstellung git am an, auf einen 3-Wege-Merge zurückzufallen, wenn der Patch die Identität von Blobs aufzeichnet, auf die er angewendet werden soll, und wir diese Blobs lokal verfügbar haben (entspricht der Angabe der Option --3way von der Befehlszeile). Standardmäßig ist dies false. Siehe git-am[1].

apply.ignoreWhitespace

Wenn auf change gesetzt, weist es git apply an, Änderungen im Whitespace zu ignorieren, auf die gleiche Weise wie die Option --ignore-space-change. Wenn auf eines der folgenden gesetzt: no, none, never, false, weist es git apply an, alle Whitespace-Unterschiede zu respektieren. Siehe git-apply[1].

apply.whitespace

Weist git apply an, wie mit Whitespace umgegangen werden soll, auf die gleiche Weise wie die Option --whitespace. Siehe git-apply[1].

attr.tree

Eine Referenz auf einen Baum im Repository, aus dem Attribute gelesen werden sollen, anstelle der Datei .gitattributes im Arbeitsbaum. Wenn der Wert nicht zu einem gültigen Baum-Objekt aufgelöst werden kann, wird stattdessen ein leerer Baum verwendet. Wenn die Umgebungsvariable GIT_ATTR_SOURCE oder die Befehlszeilenoption --attr-source verwendet wird, hat diese Konfigurationsvariable keine Auswirkung.

Hinweis
Die Konfigurationsoptionen in bitmapPseudoMerge.* gelten als EXPERIMENTELL und können sich in Zukunft ändern oder ganz entfernt werden. Weitere Informationen zur Pseudo-Merge-Bitmap-Funktion finden Sie im Abschnitt "Pseudo-merge bitmaps" von gitpacking[7].
bitmapPseudoMerge.<name>.pattern

Regulärer Ausdruck, der zur Übereinstimmung von Referenznamen verwendet wird. Commits, auf die von Referenzen gezeigt wird, die diesem Muster entsprechen (und die unten genannten Kriterien erfüllen, wie z.B. bitmapPseudoMerge.<name>.sampleRate und bitmapPseudoMerge.<name>.threshold), werden für die Aufnahme in eine Pseudo-Merge-Bitmap berücksichtigt.

Commits werden in Pseudo-Merge-Gruppen gruppiert, basierend darauf, ob eine oder mehrere Referenzen, die auf einen bestimmten Commit zeigen, dem Muster entsprechen, das ein erweiterter regulärer Ausdruck ist.

Innerhalb einer Pseudo-Merge-Gruppe können Commits weiter in Untergruppen gruppiert werden, basierend auf den Erfassungsgruppen im Muster. Diese Untergruppierungen werden aus den regulären Ausdrücken gebildet, indem alle Erfassungsgruppen aus dem regulären Ausdruck mit einem - Bindestrich dazwischen verkettet werden.

Wenn das Muster beispielsweise refs/tags/ lautet, werden alle Tags (vorausgesetzt, sie erfüllen die unten genannten Kriterien) für dieselbe Pseudo-Merge-Gruppe berücksichtigt. Wenn das Muster stattdessen refs/remotes/([0-9])+/tags/ lautet, werden Tags von verschiedenen Remote-Repositories in separate Pseudo-Merge-Gruppen gruppiert, basierend auf der Remote-Nummer.

bitmapPseudoMerge.<name>.decay

Bestimmt die Rate, mit der aufeinanderfolgende Pseudo-Merge-Bitmap-Gruppen kleiner werden. Muss nicht-negativ sein. Dieser Parameter kann als k in der Funktion f(n) = C * n^-k betrachtet werden, wobei f(n) die Größe der `n`-ten Gruppe ist.

Wenn die Zerfallsrate gleich 0 gesetzt wird, sind alle Gruppen gleich groß. Wenn die Zerfallsrate gleich 1 gesetzt wird, ist die `n`-te Gruppe 1/n so groß wie die anfängliche Gruppe. Höhere Werte der Zerfallsrate bewirken, dass aufeinanderfolgende Gruppen mit zunehmender Rate schrumpfen. Standardmäßig ist dies 1.

Wenn alle Gruppen gleich groß sind, ist es möglich, dass Gruppen, die neuere Commits enthalten, seltener verwendet werden können als frühere Gruppen, da es wahrscheinlicher ist, dass die Referenzen, die auf neuere Commits zeigen, häufiger aktualisiert werden als eine Referenz, die auf einen alten Commit zeigt.

bitmapPseudoMerge.<name>.sampleRate

Bestimmt den Anteil der nicht-bitmappten Commits (unter Referenzspitzen), die für die Aufnahme in eine instabile Pseudo-Merge-Bitmap ausgewählt werden. Muss zwischen 0 und 1 (einschließlich) liegen. Standardmäßig ist dies 1.

bitmapPseudoMerge.<name>.threshold

Bestimmt das Mindestalter von nicht-bitmappten Commits (unter Referenzspitzen, wie oben), die für die Aufnahme in eine instabile Pseudo-Merge-Bitmap in Frage kommen. Standardmäßig ist dies 1.week.ago.

bitmapPseudoMerge.<name>.maxMerges

Bestimmt die maximale Anzahl von Pseudo-Merge-Commits, unter denen Commits verteilt werden können.

Für Pseudo-Merge-Gruppen, deren Muster keine Erfassungsgruppen enthält, wird diese Einstellung für alle Commits angewendet, die dem regulären Ausdruck entsprechen. Für Muster mit einer oder mehreren Erfassungsgruppen wird diese Einstellung für jede einzelne Erfassungsgruppe angewendet.

Wenn Ihre Erfassungsgruppe beispielsweise refs/tags/ ist, werden alle Tags (sofern sie die unten genannten Kriterien erfüllen) in maximal maxMerges Pseudo-Merge-Commits verteilt. Wenn Ihre Erfassungsgruppe jedoch z. B. refs/remotes/([0-9]+)/tags/ ist, wird diese Einstellung auf jeden Satz von Tags pro Remote einzeln angewendet.

Muss nicht-negativ sein. Der Standardwert ist 64.

bitmapPseudoMerge.<name>.stableThreshold

Bestimmt das Mindestalter von Commits (unter Referenzspitzen, wie oben, jedoch werden stabile Commits auch dann als Kandidaten betrachtet, wenn sie von einer Bitmap abgedeckt wurden), die für eine stabile Pseudo-Merge-Bitmap in Frage kommen. Standardmäßig ist dies 1.month.ago.

Wenn dieser Schwellenwert auf einen kleineren Wert gesetzt wird (z.B. 1.week.ago), werden mehr stabile Gruppen generiert (was einmalige Generierungskosten verursacht), diese Gruppen werden aber im Laufe der Zeit wahrscheinlich veraltet sein. Die Verwendung eines größeren Wertes verursacht die entgegengesetzte Strafe (weniger stabile Gruppen, die aber nützlicher sind).

bitmapPseudoMerge.<name>.stableSize

Bestimmt die Größe (in Anzahl der Commits) einer stabilen Pseudo-Merge-Bitmap. Standardmäßig ist dies 512.

blame.blankBoundary

Zeigt einen leeren Commit-Objektnamen für Rand-Commits in git-blame[1] an. Diese Option ist standardmäßig false.

blame.coloring

Dies bestimmt das Farbschema, das auf die Ausgabe von blame angewendet wird. Es kann repeatedLines, highlightRecent oder none sein, was der Standardwert ist.

blame.date

Gibt das Format an, das zur Ausgabe von Daten in git-blame[1] verwendet wird. Wenn nicht gesetzt, wird das ISO-Format verwendet. Für unterstützte Werte siehe die Diskussion der Option --date in git-log[1].

blame.showEmail

Zeigt die E-Mail-Adresse des Autors anstelle des Namens des Autors in git-blame[1]. Diese Option ist standardmäßig false.

blame.showRoot

Behandelt keine Root-Commits als Randpunkte in git-blame[1]. Diese Option ist standardmäßig false.

blame.ignoreRevsFile

Ignoriert Revisionen, die in der Datei aufgelistet sind, ein undokumentierter Objektname pro Zeile, in git-blame[1]. Leerzeichen und Kommentare, die mit # beginnen, werden ignoriert. Diese Option kann mehrmals wiederholt werden. Leere Dateinamen setzen die Liste der ignorierten Revisionen zurück. Diese Option wird vor der Befehlszeilenoption --ignore-revs-file behandelt.

blame.markUnblamableLines

Markiert Zeilen, die von einer ignorierten Revision geändert wurden, die wir keinem anderen Commit zuordnen konnten, mit einem * in der Ausgabe von git-blame[1].

blame.markIgnoredLines

Markiert Zeilen, die von einer ignorierten Revision geändert wurden, die wir einem anderen Commit zugeordnet haben, mit einem ? in der Ausgabe von git-blame[1].

branch.autoSetupMerge

Weist git branch, git switch und git checkout an, neue Branches so einzurichten, dass git-pull[1] vom Startpunkt-Branch aus ordnungsgemäß zusammengeführt wird. Beachten Sie, dass dieses Verhalten auch dann pro Branch über die Optionen --track und --no-track gewählt werden kann, wenn diese Option nicht gesetzt ist. Diese Option ist standardmäßig auf true gesetzt. Die gültigen Einstellungen sind

false

Es wird keine automatische Einrichtung vorgenommen.

true

Automatische Einrichtung erfolgt, wenn der Startpunkt ein Remote-Tracking-Branch ist.

always

Automatische Einrichtung erfolgt, wenn der Startpunkt entweder ein lokaler Branch oder ein Remote-Tracking-Branch ist.

inherit

Wenn der Startpunkt eine Tracking-Konfiguration hat, wird diese auf den neuen Branch kopiert.

simple

Automatische Einrichtung erfolgt nur, wenn der Startpunkt ein Remote-Tracking-Branch ist und der neue Branch denselben Namen wie der Remote-Branch hat.

branch.autoSetupRebase

Wenn ein neuer Branch mit git branch, git switch oder git checkout erstellt wird, der einen anderen Branch verfolgt, weist diese Variable Git an, Pull so einzurichten, dass stattdessen gerebased wird (siehe branch.<name>.rebase). Die gültigen Einstellungen sind

never

Rebase wird nie automatisch auf true gesetzt.

local

Rebase wird für getrackte Branches anderer lokaler Branches auf true gesetzt.

remote

Rebase wird für getrackte Branches von Remote-Tracking-Branches auf true gesetzt.

always

Rebase wird für alle Tracking-Branches auf true gesetzt.

Siehe branch.autoSetupMerge für Details zur Einrichtung eines Branches zum Verfolgen eines anderen Branches. Diese Option ist standardmäßig auf never gesetzt.

branch.sort

Diese Variable steuert die Sortierreihenfolge von Branches, wenn sie von git-branch[1] angezeigt werden. Ohne die Option --sort=<value> wird der Wert dieser Variable als Standard verwendet. Siehe git-for-each-ref[1] Feldnamen für gültige Werte.

branch.<name>.remote

Wenn sich auf Branch <name>, weist es git fetch und git push an, von welchem Remote abgerufen oder wohin gepusht werden soll. Das Remote zum Pushen kann mit remote.pushDefault (für alle Branches) überschrieben werden. Das Remote zum Pushen für den aktuellen Branch kann weiter mit branch.<name>.pushRemote überschrieben werden. Wenn kein Remote konfiguriert ist oder wenn Sie sich auf keinem Branch befinden und mehr als ein Remote im Repository definiert ist, wird standardmäßig origin für das Abrufen und remote.pushDefault für das Pushen verwendet. Zusätzlich ist . (ein Punkt) das aktuelle lokale Repository (ein Punkt-Repository), siehe branch.<name>.merge's letzter Hinweis unten.

branch.<name>.pushRemote

Wenn auf Branch <name>, überschreibt es branch.<name>.remote zum Pushen. Es überschreibt auch remote.pushDefault zum Pushen vom Branch <name>. Wenn Sie von einem Ort abrufen (z.B. Ihrem Upstream) und an einen anderen Ort pushen (z.B. Ihr eigenes Publishing-Repository), möchten Sie remote.pushDefault setzen, um das Remote zum Pushen für alle Branches anzugeben, und diese Option verwenden, um es für einen bestimmten Branch zu überschreiben.

branch.<name>.merge

Definiert zusammen mit branch.<name>.remote den Upstream-Branch für den angegebenen Branch. Es sagt git fetch/git pull/git rebase, welcher Branch zusammengeführt werden soll und kann auch git push beeinflussen (siehe push.default). Wenn Sie sich auf Branch <name> befinden, sagt es git fetch den Standard-Refspec, der in FETCH_HEAD zum Zusammenführen markiert werden soll. Der Wert wird wie der Remote-Teil eines Refspecs behandelt und muss einem Ref entsprechen, das vom Remote, das von branch.<name>.remote angegeben wurde, abgerufen wird. Die Merge-Informationen werden von git pull (das zuerst git fetch aufruft) verwendet, um den Standard-Branch für das Zusammenführen nachzuschlagen. Ohne diese Option führt git pull standardmäßig den ersten abgerufenen Refspec zusammen. Geben Sie mehrere Werte an, um einen Oktopus-Merge zu erhalten. Wenn Sie git pull so einrichten möchten, dass er in <name> von einem anderen Branch im lokalen Repository zusammenführt, können Sie branch.<name>.merge auf den gewünschten Branch verweisen lassen und den relativen Pfad . (ein Punkt) für branch.<name>.remote verwenden.

branch.<name>.mergeOptions

Setzt Standardoptionen für das Zusammenführen in den Branch <name>. Die Syntax und die unterstützten Optionen sind dieselben wie bei git-merge[1], aber Optionen mit Leerzeichen sind derzeit nicht unterstützt.

branch.<name>.rebase

Wenn wahr, rebased den Branch <name> auf den abgerufenen Branch, anstatt den Standard-Branch vom Standard-Remote zusammenzuführen, wenn git pull ausgeführt wird. Siehe pull.rebase, um dies nicht-branchspezifisch zu tun.

Wenn der Wert merges (oder einfach m) ist, wird die Option --rebase-merges an git rebase übergeben, damit die lokalen Merge-Commits in den Rebase einbezogen werden (siehe git-rebase[1] für Details).

Wenn der Wert interactive (oder einfach i) ist, wird der Rebase im interaktiven Modus ausgeführt.

HINWEIS: Dies ist eine potenziell gefährliche Operation; verwenden Sie sie nicht, es sei denn, Sie verstehen die Auswirkungen (siehe git-rebase[1] für Details).

branch.<name>.description

Branch-Beschreibung, kann mit git branch --edit-description bearbeitet werden. Die Branch-Beschreibung wird automatisch dem format-patch-Cover-Letter oder der request-pull-Zusammenfassung hinzugefügt.

browser.<tool>.cmd

Gibt den Befehl zum Aufrufen des angegebenen Browsers an. Der angegebene Befehl wird in der Shell ausgewertet, wobei die URLs als Argumente übergeben werden. (Siehe git-web--browse[1].)

browser.<tool>.path

Überschreibt den Pfad für das angegebene Werkzeug, das zum Anzeigen von HTML-Hilfe (siehe Option -w in git-help[1]) oder eines funktionierenden Repositorys in gitweb (siehe git-instaweb[1]) verwendet werden kann.

bundle.*

Die Schlüssel bundle.* können in einer Bundle-Listen-Datei erscheinen, die über die Option git clone --bundle-uri gefunden wird. Diese Schlüssel haben derzeit keine Auswirkungen, wenn sie in einer Repository-Konfigurationsdatei platziert werden, obwohl sich dies in Zukunft ändern wird. Weitere Details finden Sie in des Bundle-URI-Design-Dokuments.

bundle.version

Dieser ganzzahlige Wert gibt die Version des von der Bundle-Liste verwendeten Bundle-Listenformats an. Derzeit ist der einzige akzeptierte Wert 1.

bundle.mode

Dieser Zeichenkettenwert sollte entweder all oder any sein. Dieser Wert beschreibt, ob alle beworbenen Bundles erforderlich sind, um ein vollständiges Verständnis der gebündelten Informationen zu entpacken (all) oder ob eine der aufgelisteten Bundle-URIs ausreichend ist (any).

bundle.heuristic

Wenn dieser Schlüssel mit Zeichenkettenwert vorhanden ist, dann ist die Bundle-Liste so konzipiert, dass sie gut mit inkrementellen git fetch-Befehlen funktioniert. Die Heuristik signalisiert, dass für jedes Bundle zusätzliche Schlüssel verfügbar sind, die dem Client helfen zu bestimmen, welche Untermenge von Bundles heruntergeladen werden soll. Der einzige derzeit verstandene Wert ist creationToken.

bundle.<id>.*

Die Schlüssel bundle.<id>.* werden verwendet, um ein einzelnes Element in der Bundle-Liste zu beschreiben, das zur Identifizierung unter <id> gruppiert ist.

bundle.<id>.uri

Dieser Zeichenkettenwert definiert die URI, über die Git auf den Inhalt dieser <id> zugreifen kann. Diese URI kann eine Bundle-Datei oder eine andere Bundle-Liste sein.

checkout.defaultRemote

Wenn Sie git checkout <etwas> oder git switch <etwas> ausführen und nur ein Remote haben, kann dies implizit auf das Auschecken und Verfolgen von z.B. origin/<etwas> zurückfallen. Dies funktioniert nicht mehr, sobald Sie mehr als ein Remote mit einer <etwas>-Referenz haben. Diese Einstellung ermöglicht es, den Namen eines bevorzugten Remotes festzulegen, das bei der Eindeutigkeitsbestimmung immer Vorrang hat. Der typische Anwendungsfall ist, dies auf origin zu setzen.

Derzeit wird dies von git-switch[1] und git-checkout[1] verwendet, wenn git checkout <etwas> oder git switch <etwas> den <etwas>-Branch auf einem anderen Remote auscheckt, und von git-worktree[1], wenn git worktree add sich auf einen Remote-Branch bezieht. Diese Einstellung könnte in Zukunft für andere checkout-ähnliche Befehle oder Funktionalitäten verwendet werden.

checkout.guess

Stellt den Standardwert für die Option --guess oder --no-guess in git checkout und git switch bereit. Siehe git-switch[1] und git-checkout[1].

checkout.workers

Die Anzahl der parallelen Worker, die beim Aktualisieren des Arbeitsbaums verwendet werden. Standardmäßig ist dies eins, d.h. sequenzielle Ausführung. Wenn auf einen Wert kleiner als eins gesetzt, verwendet Git so viele Worker wie die Anzahl der verfügbaren logischen Kerne. Diese Einstellung und checkout.thresholdForParallelism wirken sich auf alle Befehle aus, die einen Checkout durchführen. Z.B. checkout, clone, reset, sparse-checkout usw.

Hinweis
Paralleler Checkout liefert normalerweise eine bessere Leistung für Repositories auf SSDs oder über NFS. Für Repositories auf rotierenden Festplatten und/oder Maschinen mit einer kleinen Anzahl von Kernen ist der sequentielle Standard-Checkout oft leistungsfähiger. Die Größe und der Komprimierungsgrad eines Repositorys können ebenfalls beeinflussen, wie gut die parallele Version funktioniert.
checkout.thresholdForParallelism

Beim parallelen Checkout mit einer kleinen Anzahl von Dateien können die Kosten für das Erzeugen von Subprozessen und die Interprozesskommunikation die Vorteile der Parallelisierung überwiegen. Diese Einstellung ermöglicht es Ihnen, die Mindestanzahl von Dateien festzulegen, für die ein paralleler Checkout versucht werden soll. Standardmäßig ist dies 100.

clean.requireForce

Ein boolescher Wert, der git-clean dazu bringt, die Löschung von Dateien zu verweigern, es sei denn, -f wird angegeben. Standardmäßig true.

clone.defaultRemoteName

Der Name des Remotes, das beim Klonen eines Repositorys erstellt werden soll. Standardmäßig origin. Er kann durch Angabe der Befehlszeilenoption --origin für git-clone[1] überschrieben werden.

clone.rejectShallow

Verhindert das Klonen eines Repositorys, wenn es flach ist. Dies kann durch Angabe der Option --reject-shallow auf der Befehlszeile überschrieben werden. Siehe git-clone[1].

clone.filterSubmodules

Wenn ein Filter für teilweises Klonen angegeben wird (siehe --filter in git-rev-list[1]) und --recurse-submodules verwendet wird, wird der Filter auch auf Submodule angewendet.

color.advice

Ein boolescher Wert, um Farben in Hinweisen zu aktivieren/deaktivieren (z.B. wenn ein Push fehlschlug, siehe advice.* für eine Liste). Kann auf always, false (oder never) oder auto (oder true) gesetzt werden, wobei Farben nur verwendet werden, wenn die Fehlerausgabe an ein Terminal geht. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto ist Standard).

color.advice.hint

Verwendet angepasste Farben für Hinweise.

color.blame.highlightRecent

Gibt die Linien-Annotation-Farbe für git blame --color-by-age an, abhängig vom Alter der Linie.

Diese Einstellung sollte auf eine durch Kommas getrennte Liste von Farb- und Datumseinstellungen gesetzt werden, beginnend und endend mit einer Farbe. Die Daten sollten von ältesten zu neuesten gesetzt werden. Die Metadaten werden mit den angegebenen Farben gefärbt, wenn die Zeile vor dem angegebenen Zeitstempel eingeführt wurde, wobei ältere, zeitgestempelte Farben überschrieben werden.

Anstelle eines absoluten Zeitstempels funktionieren auch relative Zeitstempel, z.B. ist 2.weeks.ago gültig, um alles älter als 2 Wochen anzusprechen.

Standardmäßig ist dies blue,12 month ago,white,1 month ago,red, was alles älter als ein Jahr blau färbt, Änderungen zwischen einem Monat und einem Jahr vor heute weiß bleiben und Zeilen, die im letzten Monat eingeführt wurden, rot gefärbt werden.

color.blame.repeatedLines

Verwendet die angegebene Farbe, um Linienannotationen für git blame --color-lines zu kolorieren, wenn sie vom selben Commit wie die vorherige Zeile stammen. Standardmäßig cyan.

color.branch

Ein boolescher Wert, um Farbe in der Ausgabe von git-branch[1] zu aktivieren/deaktivieren. Kann auf always, false (oder never) oder auto (oder true) gesetzt werden, wobei Farben nur verwendet werden, wenn die Ausgabe an ein Terminal geht. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto ist Standard).

color.branch.<slot>

Verwendet angepasste Farbe für die Branch-Kolorierung. <slot> ist einer von current (der aktuelle Branch), local (ein lokaler Branch), remote (ein Remote-Tracking-Branch in refs/remotes/), upstream (Upstream-Tracking-Branch), plain (andere Refs).

color.diff

Ob ANSI-Escape-Sequenzen verwendet werden sollen, um Patches farbig darzustellen. Wenn dies auf always gesetzt ist, verwenden git-diff[1], git-log[1] und git-show[1] Farben für alle Patches. Wenn es auf true oder auto gesetzt ist, verwenden diese Befehle Farben nur, wenn die Ausgabe an das Terminal erfolgt. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto ist Standard).

Dies wirkt sich nicht auf git-format-patch[1] oder die git-diff-* Plumbing-Befehle aus. Kann auf der Befehlszeile mit der Option --color[=<when>] überschrieben werden.

color.diff.<slot>

Verwenden Sie angepasste Farben für die Diff-Kolorierung. <slot> gibt an, welcher Teil des Patches die angegebene Farbe verwenden soll, und ist einer von context (Kontexttext – plain ist ein historisches Synonym), meta (Metainformationen), frag (Hunk-Header), func (Funktion im Hunk-Header), old (entfernte Zeilen), new (hinzugefügte Zeilen), commit (Commit-Header), whitespace (Hervorhebung von Whitespace-Fehlern), oldMoved (gelöschte Zeilen), newMoved (hinzugefügte Zeilen), oldMovedDimmed, oldMovedAlternative, oldMovedAlternativeDimmed, newMovedDimmed, newMovedAlternative newMovedAlternativeDimmed (Details finden Sie in der Einstellung <mode> von --color-moved in git-diff[1]), contextDimmed, oldDimmed, newDimmed, contextBold, oldBold und newBold (Details finden Sie in git-range-diff[1]).

color.decorate.<slot>

Verwenden Sie angepasste Farben für die Ausgabe von git log --decorate. <slot> ist einer von branch, remoteBranch, tag, stash oder HEAD für lokale Zweige, Remote-Tracking-Zweige, Tags, Stash bzw. HEAD und grafted für veredelte Commits.

color.grep

Wenn auf always gesetzt, werden Übereinstimmungen immer hervorgehoben. Wenn false (oder never), niemals. Wenn auf true oder auto gesetzt, wird Farbe nur verwendet, wenn die Ausgabe auf das Terminal geschrieben wird. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto als Standard).

color.grep.<slot>

Verwenden Sie angepasste Farben für die Grep-Kolorierung. <slot> gibt an, welcher Teil der Zeile die angegebene Farbe verwenden soll, und ist einer von

context

Nicht übereinstimmender Text in Kontextzeilen (bei Verwendung von -A, -B oder -C)

filename

Dateinamenpräfix (bei Nichtverwendung von -h)

function

Funktionsnamenzeilen (bei Verwendung von -p)

lineNumber

Zeilennummernpräfix (bei Verwendung von -n)

column

Spaltennummernpräfix (bei Verwendung von --column)

match

Übereinstimmender Text (wie die Einstellung matchContext und matchSelected)

matchContext

Übereinstimmender Text in Kontextzeilen

matchSelected

Übereinstimmender Text in ausgewählten Zeilen. Wird auch verwendet, um die folgenden git-log[1]-Unterbefehle anzupassen: --grep, --author und --committer.

selected

Nicht übereinstimmender Text in ausgewählten Zeilen. Wird auch verwendet, um die folgenden git-log[1]-Unterbefehle anzupassen: --grep, --author und --committer.

separator

Trennzeichens zwischen Feldern auf einer Zeile (:, - und =) und zwischen Hunks (--)

color.interactive

Wenn auf always gesetzt, werden interaktive Aufforderungen und Anzeigen (wie die von "git-add --interactive" und "git-clean --interactive" verwendeten) immer farblich hervorgehoben. Wenn falsch (oder never), niemals. Wenn auf true oder auto gesetzt, wird Farbe nur verwendet, wenn die Ausgabe auf das Terminal erfolgt. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto als Standard).

color.interactive.<slot>

Verwenden Sie angepasste Farben für die Ausgabe von git add --interactive und git clean --interactive. <slot> kann prompt, header, help oder error sein, für vier verschiedene Arten von normaler Ausgabe von interaktiven Befehlen.

color.pager

Ein boolescher Wert, der angibt, ob die Modi mit Farb-Auto-Einstellung die Ausgabe an den Pager kolorieren sollen. Standard ist true; setzen Sie diesen Wert auf false, wenn Ihr Pager keine ANSI-Farbcodes versteht.

color.push

Ein boolescher Wert, um Farben in Push-Fehlermeldungen zu aktivieren/deaktivieren. Kann auf always, false (oder never) oder auto (oder true) gesetzt werden. In diesem Fall werden Farben nur verwendet, wenn die Fehlerausgabe an ein Terminal erfolgt. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto als Standard).

color.push.error

Verwenden Sie eine angepasste Farbe für Push-Fehler.

color.remote

Wenn gesetzt, werden Schlüsselwörter am Anfang der Zeile hervorgehoben. Die Schlüsselwörter sind "error", "warning", "hint" und "success" und werden nicht fallweise behandelt. Kann auf always, false (oder never) oder auto (oder true) gesetzt werden. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto als Standard).

color.remote.<slot>

Verwenden Sie eine angepasste Farbe für jedes Remote-Schlüsselwort. <slot> kann hint, warning, success oder error sein, die den entsprechenden Schlüsselwörtern entsprechen.

color.showBranch

Ein boolescher Wert, um Farbe in der Ausgabe von git-show-branch[1] zu aktivieren/deaktivieren. Kann auf always, false (oder never) oder auto (oder true) gesetzt werden. In diesem Fall werden Farben nur verwendet, wenn die Ausgabe auf ein Terminal erfolgt. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto als Standard).

color.status

Ein boolescher Wert, um Farbe in der Ausgabe von git-status[1] zu aktivieren/deaktivieren. Kann auf always, false (oder never) oder auto (oder true) gesetzt werden. In diesem Fall werden Farben nur verwendet, wenn die Ausgabe auf ein Terminal erfolgt. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto als Standard).

color.status.<slot>

Verwenden Sie eine angepasste Farbe für die Status-Kolorierung. <slot> ist einer von header (der Header-Text der Statusmeldung), added oder updated (Dateien, die hinzugefügt, aber nicht committet wurden), changed (Dateien, die geändert, aber nicht im Index hinzugefügt wurden), untracked (Dateien, die von Git nicht verfolgt werden), branch (der aktuelle Zweig), nobranch (die Farbe, in der die Warnung *no branch* angezeigt wird, standardmäßig rot), localBranch oder remoteBranch (die lokalen und Remote-Zweig-Namen, bzw. wenn Zweig- und Tracking-Informationen im Kurzformat des Status angezeigt werden) oder unmerged (Dateien mit nicht zusammengeführten Änderungen).

color.transport

Ein boolescher Wert, um Farbe bei abgelehnten Pushes zu aktivieren/deaktivieren. Kann auf always, false (oder never) oder auto (oder true) gesetzt werden. In diesem Fall werden Farben nur verwendet, wenn die Fehlerausgabe an ein Terminal erfolgt. Wenn nicht gesetzt, wird der Wert von color.ui verwendet (auto als Standard).

color.transport.rejected

Verwenden Sie eine angepasste Farbe, wenn ein Push abgelehnt wurde.

color.ui

Diese Variable bestimmt den Standardwert für Variablen wie color.diff und color.grep, die die Verwendung von Farben pro Befehlsfamilie steuern. Ihr Geltungsbereich wird erweitert, wenn weitere Befehle Konfigurationen für die Einstellung eines Standardwerts für die Option --color erhalten. Setzen Sie sie auf false oder never, wenn Git-Befehle keine Farbe verwenden sollen, es sei denn, sie werden explizit mit einer anderen Konfiguration oder der Option --color aktiviert. Setzen Sie sie auf always, wenn Sie möchten, dass alle Ausgaben, die nicht für die maschinelle Verarbeitung bestimmt sind, Farbe verwenden. Setzen Sie sie auf true oder auto (dies ist seit Git 1.8.4 der Standard), wenn Sie möchten, dass solche Ausgaben Farbe verwenden, wenn sie auf das Terminal geschrieben werden.

column.ui

Gibt an, ob unterstützte Befehle in Spalten ausgeben sollen. Diese Variable besteht aus einer Liste von durch Leerzeichen oder Kommas getrennten Token.

Diese Optionen steuern, wann die Funktion aktiviert werden soll (Standard ist never)

always

immer in Spalten anzeigen

never

nie in Spalten anzeigen

auto

in Spalten anzeigen, wenn die Ausgabe an das Terminal geht

Diese Optionen steuern das Layout (Standard ist column). Die Einstellung einer dieser Optionen impliziert always, wenn keine der Optionen always, never oder auto angegeben ist.

column

Spalten vor Zeilen füllen

row

Zeilen vor Spalten füllen

plain

in einer Spalte anzeigen

Schließlich können diese Optionen mit einer Layout-Option kombiniert werden (Standard ist nodense)

dense

ungleich große Spalten erstellen, um mehr Platz zu nutzen

nodense

gleich große Spalten erstellen

column.branch

Gibt an, ob die Zweigliste in git branch in Spalten ausgegeben werden soll. Details siehe column.ui.

column.clean

Gibt das Layout beim Auflisten von Elementen in git clean -i an, das Dateien und Verzeichnisse immer in Spalten anzeigt. Details siehe column.ui.

column.status

Gibt an, ob unverfolgte Dateien in git status in Spalten ausgegeben werden sollen. Details siehe column.ui.

column.tag

Gibt an, ob Tag-Listen in git tag in Spalten ausgegeben werden sollen. Details siehe column.ui.

commit.cleanup

Diese Einstellung überschreibt den Standardwert der Option --cleanup in git commit. Details siehe git-commit[1]. Das Ändern des Standardwerts kann nützlich sein, wenn Sie Zeilen, die mit dem Kommentarzeichen beginnen (core.commentChar, Standard #), in Ihrer Log-Nachricht immer beibehalten möchten. In diesem Fall würden Sie git config commit.cleanup whitespace ausführen (beachten Sie, dass Sie die Hilfezeilen, die mit dem Kommentarzeichen beginnen, in der Commit-Log-Vorlage selbst entfernen müssen, wenn Sie dies tun).

commit.gpgSign

Ein boolescher Wert, der angibt, ob alle Commits GPG-signiert werden sollen. Die Verwendung dieser Option bei Vorgängen wie Rebase kann dazu führen, dass eine große Anzahl von Commits signiert wird. Es kann praktisch sein, einen Agenten zu verwenden, um die Eingabe Ihrer GPG-Passphrase mehrmals zu vermeiden.

commit.status

Ein boolescher Wert, um die Einbeziehung von Statusinformationen in die Commit-Nachrichten-Vorlage beim Verwenden eines Editors zur Vorbereitung der Commit-Nachricht zu aktivieren/deaktivieren. Standard ist true.

commit.template

Gibt den Pfadnamen einer Datei an, die als Vorlage für neue Commit-Nachrichten verwendet werden soll.

commit.verbose

Ein boolescher Wert oder eine Ganzzahl, um den Grad der Ausführlichkeit bei git commit anzugeben. Details siehe git-commit[1].

commitGraph.generationVersion

Gibt den Typ der zu verwendenden Generierungsnummerversion beim Schreiben oder Lesen der Commit-Graph-Datei an. Wenn Version 1 angegeben ist, werden die korrigierten Commit-Daten nicht geschrieben oder gelesen. Standard ist 2.

commitGraph.maxNewFilters

Gibt den Standardwert für die Option --max-new-filters von git commit-graph write an (siehe git-commit-graph[1]).

commitGraph.changedPaths

Wenn true, berechnet und schreibt git commit-graph write standardmäßig Bloom-Filter für geänderte Pfade, was dem Übergeben von --changed-paths entspricht. Wenn false oder nicht gesetzt, werden Bloom-Filter für geänderte Pfade während git commit-graph write nur geschrieben, wenn die Filter bereits in der aktuellen Commit-Graph-Datei vorhanden sind. Dies entspricht dem Standardverhalten von git commit-graph write ohne Option --[no-]changed-paths. Um eine Commit-Graph-Datei ohne Filter neu zu schreiben, verwenden Sie die Option --no-changed-paths. Die Befehlszeilenoption --[no-]changed-paths hat immer Vorrang vor dieser Konfiguration. Standard ist nicht gesetzt.

commitGraph.readChangedPaths

Veraltet. Entspricht `commitGraph.changedPathsVersion=-1` wenn true, und `commitGraph.changedPathsVersion=0` wenn false. (Wenn `commitGraph.changedPathVersion` ebenfalls gesetzt ist, hat `commitGraph.changedPathsVersion` Vorrang.)

commitGraph.changedPathsVersion

Gibt die Version der Bloom-Filter für geänderte Pfade an, die Git lesen und schreiben wird. Kann -1, 0, 1 oder 2 sein. Beachten Sie, dass Versionen größer als 1 mit älteren Git-Versionen, die diese Versionen noch nicht verstehen, inkompatibel sein können. Seien Sie vorsichtig, wenn Sie in einer Umgebung mit gemischten Versionen arbeiten.

Standard ist -1.

Wenn -1, verwendet Git die Version der Bloom-Filter für geänderte Pfade im Repository und standardmäßig 1, wenn keine vorhanden sind.

Wenn 0, liest Git keine Bloom-Filter und schreibt Version 1 Bloom-Filter, wenn zum Schreiben aufgefordert wird.

Wenn 1, liest Git nur Version 1 Bloom-Filter und schreibt Version 1 Bloom-Filter.

Wenn 2, liest Git nur Version 2 Bloom-Filter und schreibt Version 2 Bloom-Filter.

Weitere Informationen finden Sie in git-commit-graph[1].

completion.commands

Dies wird nur von git-completion.bash verwendet, um Befehle zur Liste der vervollständigten Befehle hinzuzufügen oder daraus zu entfernen. Normalerweise werden nur Porcelain-Befehle und einige ausgewählte andere vervollständigt. Sie können weitere Befehle, durch Leerzeichen getrennt, in dieser Variablen hinzufügen. Das Präfixieren des Befehls mit - entfernt ihn aus der vorhandenen Liste.

core.fileMode

Teilt Git mit, ob die Ausführungsberechtigung von Dateien im Arbeitsverzeichnis beachtet werden soll.

Einige Dateisysteme verlieren das Ausführungsbit, wenn eine als ausführbar markierte Datei ausgecheckt wird, oder checken eine nicht ausführbare Datei mit gesetztem Ausführungsbit aus. git-clone[1] oder git-init[1] prüfen das Dateisystem, um zu sehen, ob es das Ausführungsbit korrekt behandelt, und diese Variable wird entsprechend automatisch gesetzt.

Ein Repository kann sich jedoch auf einem Dateisystem befinden, das die Dateimodus korrekt behandelt, und diese Variable wird beim Erstellen auf true gesetzt, kann aber später von einer anderen Umgebung aus zugänglich gemacht werden, die den Dateimodus verliert (z. B. Export von ext4 über einen CIFS-Mount, Besuch eines von Cygwin erstellten Repositorys mit Git für Windows oder Eclipse). In diesem Fall kann es notwendig sein, diese Variable auf false zu setzen. Siehe git-update-index[1].

Der Standardwert ist true (wenn core.filemode nicht in der Konfigurationsdatei angegeben ist).

core.hideDotFiles

(Nur Windows) Wenn true, werden neu erstellte Verzeichnisse und Dateien, deren Name mit einem Punkt beginnt, als versteckt markiert. Wenn dotGitOnly, wird nur das Verzeichnis .git/ versteckt, aber keine anderen Dateien, die mit einem Punkt beginnen. Der Standardmodus ist dotGitOnly.

core.ignoreCase

Interne Variable, die verschiedene Workarounds aktiviert, um Git die bessere Arbeit auf Dateisystemen zu ermöglichen, die nicht case-sensitiv sind, wie APFS, HFS+, FAT, NTFS usw. Wenn beispielsweise eine Verzeichnisauflistung "makefile" findet, wenn Git "Makefile" erwartet, geht Git davon aus, dass es sich um dieselbe Datei handelt und merkt sie sich weiterhin als "Makefile".

Der Standardwert ist false, außer dass git-clone[1] oder git-init[1] das Dateisystem prüft und `core.ignoreCase` bei Bedarf auf true setzt, wenn das Repository erstellt wird.

Git ist auf die korrekte Konfiguration dieser Variable für Ihr Betriebssystem und Dateisystem angewiesen. Das Ändern dieses Werts kann zu unerwartetem Verhalten führen.

core.precomposeUnicode

Diese Option wird nur von der Mac OS-Implementierung von Git verwendet. Wenn core.precomposeUnicode=true, kehrt Git die Unicode-Zerlegung von Dateinamen, die von Mac OS durchgeführt wird, um. Dies ist nützlich, wenn Sie ein Repository zwischen Mac OS und Linux oder Windows teilen. (Git für Windows 1.7.10 oder höher ist erforderlich, oder Git unter Cygwin 1.7). Wenn false, werden Dateinamen von Git vollständig transparent behandelt, was mit älteren Git-Versionen abwärtskompatibel ist.

core.protectHFS

Wenn auf true gesetzt, werden keine Pfade ausgecheckt, die auf einem HFS+-Dateisystem als äquivalent zu .git betrachtet würden. Standard ist true unter Mac OS und false überall sonst.

core.protectNTFS

Wenn auf true gesetzt, werden keine Pfade ausgecheckt, die Probleme mit dem NTFS-Dateisystem verursachen würden, z. B. Konflikte mit 8.3 "kurzen" Namen. Standard ist true unter Windows und false überall sonst.

core.fsmonitor

Wenn auf true gesetzt, wird der integrierte Dateisystemüberwachungsdaemon für dieses Arbeitsverzeichnis aktiviert (git-fsmonitor--daemon[1]).

Ähnlich wie bei Hook-basierten Dateisystemmonitoren kann der integrierte Dateisystemmonitor Git-Befehle, die den Git-Index aktualisieren müssen (z. B. git status), in einem Arbeitsverzeichnis mit vielen Dateien beschleunigen. Der integrierte Monitor macht die Installation und Wartung eines externen Tools von Drittanbietern überflüssig.

Der integrierte Dateisystemmonitor ist derzeit nur auf einer begrenzten Anzahl unterstützter Plattformen verfügbar. Dazu gehören derzeit Windows und MacOS.

Andernfalls enthält diese Variable den Pfadnamen des "fsmonitor"-Hook-Befehls.

Dieser Hook-Befehl wird verwendet, um alle Dateien zu identifizieren, die sich seit dem angeforderten Datum/Uhrzeit geändert haben könnten. Diese Informationen werden verwendet, um Git zu beschleunigen, indem unnötiges Scannen von Dateien vermieden wird, die sich nicht geändert haben.

Siehe den Abschnitt "fsmonitor-watchman" in githooks[5].

Beachten Sie, dass bei gleichzeitiger Verwendung mehrerer Git-Versionen, z. B. einer Version auf der Kommandozeile und einer anderen Version in einem IDE-Tool, die Definition von core.fsmonitor erweitert wurde, um boolesche Werte zusätzlich zu Hook-Pfadnamen zuzulassen. Git-Versionen 2.35.1 und früher verstehen die booleschen Werte nicht und betrachten die Werte "true" oder "false" als aufzurufende Hook-Pfadnamen. Git-Versionen 2.26 bis 2.35.1 verwenden standardmäßig das Hook-Protokoll V2 und greifen auf keinen fsmonitor zurück (vollständiger Scan). Git-Versionen vor 2.26 verwenden standardmäßig das Hook-Protokoll V1 und gehen stillschweigend davon aus, dass keine Änderungen gemeldet wurden (kein Scan), sodass Statusbefehle möglicherweise unvollständige Ergebnisse liefern. Aus diesem Grund ist es am besten, alle Ihre Git-Versionen zu aktualisieren, bevor Sie den integrierten Dateisystemmonitor verwenden.

core.fsmonitorHookVersion

Legt die zu verwendende Protokollversion beim Aufrufen des "fsmonitor"-Hooks fest.

Es gibt derzeit die Versionen 1 und 2. Wenn dies nicht gesetzt ist, wird zuerst Version 2 versucht und wenn dies fehlschlägt, dann Version 1. Version 1 verwendet einen Zeitstempel als Eingabe, um festzustellen, welche Dateien seit diesem Zeitpunkt geändert wurden, aber einige Monitore wie Watchman haben Rennbedingungen, wenn sie mit einem Zeitstempel verwendet werden. Version 2 verwendet einen undurchsichtigen String, so dass der Monitor etwas zurückgeben kann, das verwendet werden kann, um festzustellen, welche Dateien ohne Rennbedingungen geändert wurden.

core.trustctime

Wenn false, werden die ctime-Unterschiede zwischen dem Index und dem Arbeitsverzeichnis ignoriert; nützlich, wenn die Inode-Änderungszeit regelmäßig von etwas außerhalb von Git geändert wird (Dateisystem-Crawler und einige Backup-Systeme). Siehe git-update-index[1]. Standardmäßig true.

core.splitIndex

Wenn true, wird die Split-Index-Funktion des Index verwendet. Siehe git-update-index[1]. Standardmäßig false.

core.untrackedCache

Bestimmt, was mit der Funktion des Caches für unverfolgte Dateien des Index geschehen soll. Er wird beibehalten, wenn diese Variable nicht gesetzt oder auf keep gesetzt ist. Er wird automatisch hinzugefügt, wenn er auf true gesetzt ist. Und er wird automatisch entfernt, wenn er auf false gesetzt ist. Bevor Sie ihn auf true setzen, sollten Sie prüfen, ob mtime auf Ihrem System ordnungsgemäß funktioniert. Siehe git-update-index[1]. Standardmäßig keep, es sei denn, feature.manyFiles ist aktiviert, was diese Einstellung standardmäßig auf true setzt.

core.checkStat

Wenn fehlend oder auf default gesetzt, werden viele Felder in der Stat-Struktur überprüft, um zu erkennen, ob eine Datei geändert wurde, seit Git sie betrachtet hat. Wenn diese Konfigurationsvariable auf minimal gesetzt ist, werden der Subsekundenanteil von mtime und ctime, die uid und gid des Eigentümers der Datei, die Inode-Nummer (und die Gerätenummer, wenn Git so kompiliert wurde, dass es sie verwendet) aus der Überprüfung dieser Felder ausgeschlossen, sodass nur der Ganzsekundenanteil von mtime (und ctime, wenn core.trustCtime gesetzt ist) und die Dateigröße überprüft werden.

Es gibt Implementierungen von Git, die in einigen Feldern keine brauchbaren Werte hinterlassen (z. B. JGit); durch den Ausschluss dieser Felder aus dem Vergleich kann der minimal-Modus die Interoperabilität verbessern, wenn dasselbe Repository gleichzeitig von diesen anderen Systemen verwendet wird.

core.quotePath

Befehle, die Pfade ausgeben (z. B. ls-files, diff), quotieren "ungewöhnliche" Zeichen im Pfadnamen, indem sie den Pfadnamen in doppelte Anführungszeichen setzen und diese Zeichen mit Backslashes escapen, ähnlich wie C Steuerzeichen (z. B. \t für TAB, \n für LF, \\ für Backslash) oder Bytes mit Werten größer als 0x80 (z. B. oktal \302\265 für "Mikro" in UTF-8) escapen. Wenn diese Variable auf false gesetzt ist, werden Bytes höher als 0x80 nicht mehr als "ungewöhnlich" betrachtet. Doppelte Anführungszeichen, Backslashes und Steuerzeichen werden immer escapet, unabhängig von der Einstellung dieser Variable. Ein einfaches Leerzeichen wird nicht als "ungewöhnlich" betrachtet. Viele Befehle können Pfadnamen mit der Option -z vollständig unverändert ausgeben. Der Standardwert ist true.

core.eol

Legt den Zeilenumbruchtyp fest, der im Arbeitsverzeichnis für Dateien verwendet werden soll, die als Text markiert sind (entweder durch Setzen des Attributs text oder durch text=auto und automatische Erkennung des Inhalts als Text durch Git). Alternativen sind lf, crlf und native, das den nativen Zeilenumbruch der Plattform verwendet. Der Standardwert ist native. Weitere Informationen zur Konvertierung von Zeilenumbrüchen finden Sie in gitattributes[5]. Beachten Sie, dass dieser Wert ignoriert wird, wenn core.autocrlf auf true oder input gesetzt ist.

core.safecrlf

Wenn true, wird Git überprüfen, ob die Konvertierung von CRLF umkehrbar ist, wenn die Konvertierung von Zeilenumbrüchen aktiv ist. Git prüft, ob ein Befehl eine Datei im Arbeitsverzeichnis entweder direkt oder indirekt modifiziert. Zum Beispiel sollte das Committen einer Datei, gefolgt vom Auschecken derselben Datei, zur ursprünglichen Datei im Arbeitsverzeichnis führen. Wenn dies für die aktuelle Einstellung von core.autocrlf nicht der Fall ist, wird Git die Datei ablehnen. Die Variable kann auf "warn" gesetzt werden, in diesem Fall wird Git nur eine Warnung über eine irreversible Konvertierung ausgeben, aber den Vorgang fortsetzen.

Die CRLF-Konvertierung birgt eine geringe Gefahr der Datenbeschädigung. Wenn sie aktiviert ist, konvertiert Git CRLF zu LF während des Commits und LF zu CRLF während des Checkouts. Eine Datei, die vor dem Commit eine Mischung aus LF und CRLF enthält, kann von Git nicht neu erstellt werden. Für Textdateien ist dies das Richtige: Es korrigiert Zeilenenden, so dass wir nur LF-Zeilenenden im Repository haben. Aber für Binärdateien, die versehentlich als Text klassifiziert werden, kann die Konvertierung Daten beschädigen.

Wenn Sie eine solche Beschädigung frühzeitig erkennen, können Sie sie leicht beheben, indem Sie den Konvertierungstyp explizit in .gitattributes festlegen. Direkt nach dem Commit haben Sie die Originaldatei noch in Ihrem Arbeitsbaum, und diese Datei ist noch nicht beschädigt. Sie können Git explizit mitteilen, dass diese Datei binär ist, und Git wird die Datei entsprechend behandeln.

Leider können der gewünschte Effekt der Bereinigung von Textdateien mit gemischten Zeilenenden und der unerwünschte Effekt der Beschädigung von Binärdateien nicht unterschieden werden. In beiden Fällen werden CRLFs auf irreversible Weise entfernt. Für Textdateien ist dies das Richtige, da CRLFs Zeilenenden sind, während bei Binärdateien die Konvertierung von CRLFs Daten beschädigt.

Beachten Sie, dass diese Sicherheitsprüfung nicht bedeutet, dass ein Checkout eine Datei generiert, die mit einer anderen Einstellung von core.eol und core.autocrlf identisch mit der Originaldatei ist, sondern nur für die aktuelle Einstellung. Zum Beispiel würde eine Textdatei mit LF mit core.eol=lf akzeptiert und könnte später mit core.eol=crlf ausgecheckt werden, in welchem Fall die resultierende Datei CRLF enthalten würde, obwohl die Originaldatei LF enthielt. In beiden Arbeitsbäumen wären die Zeilenenden jedoch konsistent, d.h. entweder alle LF oder alle CRLF, aber niemals gemischt. Eine Datei mit gemischten Zeilenenden würde durch den core.safecrlf-Mechanismus gemeldet.

core.autocrlf

Das Setzen dieser Variable auf "true" ist dasselbe wie das Setzen des text-Attributs auf "auto" für alle Dateien und core.eol auf "crlf". Setzen Sie es auf true, wenn Sie CRLF-Zeilenenden in Ihrem Arbeitsverzeichnis haben möchten und das Repository LF-Zeilenenden hat. Diese Variable kann auf input gesetzt werden, in welchem Fall keine Ausgabe-Konvertierung durchgeführt wird.

core.checkRoundtripEncoding

Eine durch Kommas und/oder Leerzeichen getrennte Liste von Encodings, für die Git UTF-8-Roundtrip-Prüfungen durchführt, wenn sie in einem working-tree-encoding-Attribut verwendet werden (siehe gitattributes[5]). Der Standardwert ist SHIFT-JIS.

Wenn false, werden symbolische Links als kleine Plain-Dateien ausgecheckt, die den Linktext enthalten. git-update-index[1] und git-add[1] ändern den aufgezeichneten Typ nicht in eine reguläre Datei. Nützlich auf Dateisystemen wie FAT, die keine symbolischen Links unterstützen.

Standard ist true, außer git-clone[1] oder git-init[1] werden beim Erstellen des Repositorys auf die passende Einstellung prüfen und core.symlinks auf false setzen.

core.gitProxy

Ein "Proxy-Befehl", der ausgeführt wird (als Befehl Host Port) anstelle einer direkten Verbindung zum entfernten Server beim Verwenden des Git-Protokolls zum Abrufen. Wenn der Variablenwert im Format "BEFEHL für DOMAIN" vorliegt, wird der Befehl nur auf Hostnamen angewendet, die mit der angegebenen Domain-Zeichenfolge enden. Diese Variable kann mehrmals gesetzt werden und wird in der angegebenen Reihenfolge abgeglichen; die erste Übereinstimmung gewinnt.

Kann durch die Umgebungsvariable GIT_PROXY_COMMAND überschrieben werden (die immer universell gilt, ohne die spezielle "für"-Behandlung).

Die spezielle Zeichenkette none kann als Proxy-Befehl verwendet werden, um anzugeben, dass für ein bestimmtes Domainmuster kein Proxy verwendet werden soll. Dies ist nützlich, um Server innerhalb einer Firewall von der Proxy-Nutzung auszuschließen, während für externe Domains ein gemeinsamer Proxy verwendet wird.

core.sshCommand

Wenn diese Variable gesetzt ist, verwenden git fetch und git push den angegebenen Befehl anstelle von ssh, wenn sie sich mit einem entfernten System verbinden müssen. Der Befehl hat dasselbe Format wie die Umgebungsvariable GIT_SSH_COMMAND und wird überschrieben, wenn die Umgebungsvariable gesetzt ist.

core.ignoreStat

Wenn true, vermeidet Git das Verwenden von lstat()-Aufrufen, um zu erkennen, ob Dateien geändert wurden, indem das "assume-unchanged"-Bit für die nachverfolgten Dateien gesetzt wird, die sowohl im Index als auch im Arbeitsbaum identisch aktualisiert wurden.

Wenn Dateien außerhalb von Git geändert werden, muss der Benutzer die geänderten Dateien explizit stagen (siehe z.B. den Abschnitt Beispiele in git-update-index[1]). Git erkennt Änderungen an diesen Dateien normalerweise nicht.

Dies ist nützlich auf Systemen, auf denen lstat()-Aufrufe sehr langsam sind, wie z.B. CIFS/Microsoft Windows.

Standardmäßig false.

core.preferSymlinkRefs

Anstelle des Standardformats "symref" für HEAD und andere symbolische Referenzdateien werden symbolische Links verwendet. Dies ist manchmal erforderlich, um mit alten Skripten zu arbeiten, die erwarten, dass HEAD ein symbolischer Link ist.

Diese Konfiguration ist veraltet und wird in Git 3.0 entfernt. Symbolische Referenzen werden immer als textuelle Symrefs geschrieben.

core.alternateRefsCommand

Beim Ankündigen von Spitzen verfügbarer Historie von einer Alternative wird die Shell verwendet, um den angegebenen Befehl anstelle von git-for-each-ref[1] auszuführen. Das erste Argument ist der absolute Pfad der Alternative. Die Ausgabe muss eine Hex-Objekt-ID pro Zeile enthalten (d.h. dasselbe wie von git for-each-ref --format='%(objectname) produziert).

Beachten Sie, dass Sie git for-each-ref im Allgemeinen nicht direkt in den Konfigurationswert einfügen können, da er keinen Repository-Pfad als Argument nimmt (Sie können den obigen Befehl aber in ein Shell-Skript verpacken).

core.alternateRefsPrefixes

Beim Auflisten von Referenzen von einer Alternative werden nur Referenzen aufgelistet, die mit dem angegebenen Präfix beginnen. Präfixe werden abgeglichen, als ob sie als Argumente für git-for-each-ref[1] angegeben wären. Um mehrere Präfixe aufzulisten, trennen Sie sie durch Leerzeichen. Wenn core.alternateRefsCommand gesetzt ist, hat das Setzen von core.alternateRefsPrefixes keine Auswirkung.

core.bare

Wenn true, wird dieses Repository als *bare* (ohne Arbeitsverzeichnis) angenommen. Wenn dies der Fall ist, werden einige Befehle, die ein Arbeitsverzeichnis benötigen, deaktiviert, wie z.B. git-add[1] oder git-merge[1].

Diese Einstellung wird von git-clone[1] oder git-init[1] automatisch erraten, wenn das Repository erstellt wurde. Standardmäßig wird ein Repository, das auf "/.git" endet, als nicht bare (bare = false) angenommen, während alle anderen Repositorys als bare (bare = true) angenommen werden.

core.worktree

Legt den Pfad zum Stammverzeichnis des Arbeitsbaums fest. Wenn die Umgebungsvariable GIT_COMMON_DIR gesetzt ist, wird core.worktree ignoriert und nicht zur Bestimmung des Stammverzeichnisses des Arbeitsbaums verwendet. Dies kann durch die Umgebungsvariable GIT_WORK_TREE und die Befehlszeilenoption --work-tree überschrieben werden. Der Wert kann ein absoluter Pfad oder relativ zum Pfad zum .git-Verzeichnis sein, der entweder durch --git-dir oder GIT_DIR angegeben oder automatisch ermittelt wird. Wenn --git-dir oder GIT_DIR angegeben ist, aber keine der Optionen --work-tree, GIT_WORK_TREE und core.worktree angegeben ist, wird das aktuelle Arbeitsverzeichnis als oberste Ebene Ihres Arbeitsbaums betrachtet.

Beachten Sie, dass diese Variable auch dann berücksichtigt wird, wenn sie in einer Konfigurationsdatei in einem ".git"-Unterverzeichnis eines Verzeichnisses gesetzt ist und ihr Wert von dem letzteren Verzeichnis abweicht (z.B. hat "/path/to/.git/config" core.worktree auf "/different/path" gesetzt), was höchstwahrscheinlich eine Fehlkonfiguration ist. Das Ausführen von Git-Befehlen im Verzeichnis "/path/to" wird weiterhin "/different/path" als Stammverzeichnis des Arbeitsbaums verwenden und kann zu Verwirrung führen, es sei denn, Sie wissen, was Sie tun (z.B. Sie erstellen einen schreibgeschützten Snapshot desselben Index an einem anderen Ort als dem üblichen Arbeitsbaum des Repositorys).

core.logAllRefUpdates

Aktiviert das Reflog. Aktualisierungen einer Referenz <ref> werden in die Datei "$GIT_DIR/logs/<ref>" protokolliert, indem die neue und alte SHA-1, Datum/Uhrzeit und der Grund der Aktualisierung angehängt werden, aber nur, wenn die Datei existiert. Wenn diese Konfigurationsvariable auf true gesetzt ist, wird eine fehlende Datei "$GIT_DIR/logs/<ref>" automatisch für Branch-Köpfe (d.h. unter refs/heads/), Remote-Referenzen (d.h. unter refs/remotes/), Note-Referenzen (d.h. unter refs/notes/) und die symbolische Referenz HEAD erstellt. Wenn sie auf always gesetzt ist, wird eine fehlende Reflog automatisch für jede Referenz unter refs/ erstellt.

Diese Informationen können verwendet werden, um festzustellen, welcher Commit vor "2 Tagen" die Spitze eines Branches war.

Dieser Wert ist standardmäßig true in einem Repository, das ein damit verbundenes Arbeitsverzeichnis hat, und standardmäßig false in einem Bare-Repository.

core.repositoryFormatVersion

Interne Variable zur Identifizierung der Repository-Format- und Layoutversion. Siehe gitrepository-layout[5].

core.sharedRepository

Wenn *group* (oder *true*), wird das Repository für mehrere Benutzer in einer Gruppe teilbar gemacht (wodurch sichergestellt wird, dass alle Dateien und Objekte gruppenbeschreibbar sind). Wenn *all* (oder *world* oder *everybody*), ist das Repository für alle Benutzer lesbar, zusätzlich zur Gruppenfreigabe. Wenn *umask* (oder *false*), verwendet Git die vom umask(2) gemeldeten Berechtigungen. Wenn *0xxx*, wobei *0xxx* eine oktale Zahl ist, haben Dateien im Repository diesen Moduswert. *0xxx* überschreibt den umask-Wert des Benutzers (während die anderen Optionen nur angeforderte Teile des umask-Werts des Benutzers überschreiben). Beispiele: *0660* macht das Repo für den Eigentümer und die Gruppe les- und schreibbar, aber für andere unzugänglich (entspricht *group*, es sei denn, umask ist z.B. *0022*). *0640* ist ein Repository, das für die Gruppe lesbar, aber nicht schreibbar ist. Siehe git-init[1]. Standardmäßig false.

core.warnAmbiguousRefs

Wenn true, wird Git Sie warnen, wenn der von Ihnen übergebene Ref-Name mehrdeutig ist und mehrere Refs im Repository übereinstimmen könnte. Standardmäßig true.

core.compression

Eine Ganzzahl -1..9, die eine Standard-Kompressionsebene angibt. -1 ist der zlib-Standard. 0 bedeutet keine Kompression, und 1..9 sind verschiedene Geschwindigkeits-/Größen-Trade-offs, wobei 9 die langsamste ist. Wenn gesetzt, liefert dies einen Standard für andere Kompressionsvariablen, wie z.B. core.looseCompression und pack.compression.

core.looseCompression

Eine Ganzzahl -1..9, die die Kompressionsebene für Objekte angibt, die sich nicht in einer Pack-Datei befinden. -1 ist der zlib-Standard. 0 bedeutet keine Kompression, und 1..9 sind verschiedene Geschwindigkeits-/Größen-Trade-offs, wobei 9 die langsamste ist. Wenn nicht gesetzt, wird standardmäßig core.compression verwendet. Wenn dieses nicht gesetzt ist, wird standardmäßig 1 (beste Geschwindigkeit) verwendet.

core.packedGitWindowSize

Anzahl der Bytes einer Pack-Datei, die in einer einzigen Mapping-Operation in den Speicher gemappt werden. Größere Fenstergrößen können dazu führen, dass Ihr System eine kleinere Anzahl großer Pack-Dateien schneller verarbeitet. Kleinere Fenstergrößen beeinträchtigen die Leistung aufgrund erhöhter Aufrufe des Speichermanagers des Betriebssystems, können aber die Leistung beim Zugriff auf eine große Anzahl großer Pack-Dateien verbessern.

Standard ist 1 MiB, wenn NO_MMAP zur Kompilierzeit gesetzt war, ansonsten 32 MiB auf 32-Bit-Plattformen und 1 GiB auf 64-Bit-Plattformen. Dies sollte für alle Benutzer/Betriebssysteme angemessen sein. Sie müssen diesen Wert wahrscheinlich nicht anpassen.

Gängige Einheiten-Suffixe von *k*, *m* oder *g* werden unterstützt.

core.packedGitLimit

Maximale Anzahl von Bytes, die gleichzeitig aus Pack-Dateien in den Speicher gemappt werden. Wenn Git mehr als diese Anzahl von Bytes gleichzeitig benötigt, um eine Operation abzuschließen, wird es vorhandene Regionen unmappen, um virtuellen Adressraum innerhalb des Prozesses freizugeben.

Standard ist 256 MiB auf 32-Bit-Plattformen und 32 TiB (effektiv unbegrenzt) auf 64-Bit-Plattformen. Dies sollte für alle Benutzer/Betriebssysteme angemessen sein, außer bei den größten Projekten. Sie müssen diesen Wert wahrscheinlich nicht anpassen.

Gängige Einheiten-Suffixe von *k*, *m* oder *g* werden unterstützt.

core.deltaBaseCacheLimit

Maximale Anzahl von Bytes pro Thread, die für das Caching von Basisobjekten reserviert werden, auf die von mehreren deltatisierten Objekten verwiesen werden kann. Durch das Speichern der vollständig dekomprimierten Basisobjekte in einem Cache kann Git das mehrfache Entpacken und Dekomprimieren häufig verwendeter Basisobjekte vermeiden.

Standard ist 96 MiB auf allen Plattformen. Dies sollte für alle Benutzer/Betriebssysteme angemessen sein, außer bei den größten Projekten. Sie müssen diesen Wert wahrscheinlich nicht anpassen.

Gängige Einheiten-Suffixe von *k*, *m* oder *g* werden unterstützt.

core.bigFileThreshold

Die Größe von Dateien, die als "groß" gelten, was, wie unten diskutiert, das Verhalten zahlreicher Git-Befehle ändert und auch, wie solche Dateien im Repository gespeichert werden. Der Standardwert ist 512 MiB. Gängige Einheiten-Suffixe von *k*, *m* oder *g* werden unterstützt.

Dateien oberhalb des konfigurierten Limits werden

  • Deflated in Packfiles gespeichert, ohne Delta-Kompression zu versuchen.

    Das Standardlimit wird hauptsächlich mit diesem Anwendungsfall im Hinterkopf festgelegt. Damit werden die meisten Projekte ihren Quellcode und andere Textdateien delta-komprimiert, aber keine größeren binären Mediendateien.

    Das Speichern großer Dateien ohne Delta-Kompression vermeidet übermäßigen Speicherverbrauch, auf Kosten eines geringfügig erhöhten Speicherbedarfs.

  • Als "binär" gekennzeichnet (siehe gitattributes[5]). z.B. git-log[1] und git-diff[1] berechnen keine Diffs für Dateien oberhalb dieses Limits.

  • Werden im Allgemeinen beim Schreiben gestreamt, was übermäßigen Speicherverbrauch vermeidet, auf Kosten eines gewissen festen Overheads. Befehle, die dies nutzen, sind git-archive[1], git-fast-import[1], git-index-pack[1], git-unpack-objects[1] und git-fsck[1].

core.excludesFile

Gibt den Pfadnamen zur Datei an, die Muster für Pfade enthält, die nicht nachverfolgt werden sollen, zusätzlich zu .gitignore (pro Verzeichnis) und .git/info/exclude. Standardmäßig $XDG_CONFIG_HOME/git/ignore. Wenn $XDG_CONFIG_HOME weder gesetzt noch leer ist, wird stattdessen $HOME/.config/git/ignore verwendet. Siehe gitignore[5].

core.askPass

Einige Befehle (z.B. svn und http-Schnittstellen), die interaktiv nach einem Passwort fragen, können angewiesen werden, ein externes Programm zu verwenden, das über den Wert dieser Variablen angegeben wird. Kann durch die Umgebungsvariable GIT_ASKPASS überschrieben werden. Wenn nicht gesetzt, wird auf den Wert der Umgebungsvariable SSH_ASKPASS zurückgegriffen oder, falls dies fehlschlägt, auf eine einfache Passwortabfrage. Das externe Programm erhält eine geeignete Eingabeaufforderung als Kommandozeilenargument und schreibt das Passwort auf seine STDOUT.

core.attributesFile

Zusätzlich zu .gitattributes (pro Verzeichnis) und .git/info/attributes sucht Git in dieser Datei nach Attributen (siehe gitattributes[5]). Pfad-Erweiterungen erfolgen auf die gleiche Weise wie für core.excludesFile. Sein Standardwert ist $XDG_CONFIG_HOME/git/attributes. Wenn $XDG_CONFIG_HOME weder gesetzt noch leer ist, wird stattdessen $HOME/.config/git/attributes verwendet.

core.hooksPath

Standardmäßig sucht Git nach Hooks im Verzeichnis $GIT_DIR/hooks. Setzen Sie dies auf einen anderen Pfad, z.B. /etc/git/hooks, und Git versucht, Ihre Hooks in diesem Verzeichnis zu finden, z.B. /etc/git/hooks/pre-receive anstelle von $GIT_DIR/hooks/pre-receive.

Der Pfad kann absolut oder relativ sein. Ein relativer Pfad wird als relativ zum Verzeichnis interpretiert, in dem die Hooks ausgeführt werden (siehe den Abschnitt "BESCHREIBUNG" von githooks[5]).

Diese Konfigurationsvariable ist nützlich in Fällen, in denen Sie Ihre Git-Hooks zentral konfigurieren möchten, anstatt sie pro Repository zu konfigurieren, oder als flexiblere und zentralere Alternative zu einem init.templateDir, in dem Sie Standard-Hooks geändert haben.

Sie können auch alle Hooks vollständig deaktivieren, indem Sie core.hooksPath auf /dev/null setzen. Dies ist normalerweise nur für fortgeschrittene Benutzer und pro Befehl unter Verwendung von Konfigurationsparametern der Form git -c core.hooksPath=/dev/null ... ratsam.

core.editor

Befehle wie commit und tag, die es Ihnen ermöglichen, Nachrichten durch Starten eines Editors zu bearbeiten, verwenden den Wert dieser Variablen, wenn sie gesetzt ist und die Umgebungsvariable GIT_EDITOR nicht gesetzt ist. Siehe git-var[1].

core.commentChar
core.commentString

Befehle wie commit und tag, die es Ihnen ermöglichen, Nachrichten zu bearbeiten, betrachten eine Zeile, die mit diesem Zeichen beginnt, als auskommentiert und entfernen sie, nachdem der Editor zurückkehrt (Standard *#*).

Wenn auf "auto" gesetzt, wählt git-commit ein Zeichen aus, das nicht das Anfangszeichen einer Zeile in vorhandenen Commit-Nachrichten ist. Die Unterstützung für diesen Wert ist veraltet und wird in Git 3.0 entfernt, da die folgenden Einschränkungen bestehen:

  • Es ist inkompatibel mit dem Hinzufügen von Kommentaren in einer Commit-Nachrichten-Vorlage. Dies schließt die Konfliktkommentare ein, die von cherry-pick, merge, rebase und revert zur Commit-Nachricht hinzugefügt werden.

  • Es ist inkompatibel mit dem Hinzufügen von Kommentaren zur Commit-Nachricht im Hook prepare-commit-msg.

  • Es ist inkompatibel mit den Befehlen fixup und squash bei der Rebase.

  • Es wird von git notes nicht beachtet.

Beachten Sie, dass diese beiden Variablen Aliase voneinander sind und in modernen Git-Versionen können Sie einen String (z.B. // oder ⁑⁕⁑) mit commentChar verwenden. Git-Versionen vor v2.45.0 ignorieren commentString, lehnen aber einen Wert für commentChar ab, der mehr als ein einzelnes ASCII-Byte umfasst. Wenn Sie Ihre Konfiguration mit älteren und neueren Git-Versionen verwenden möchten, sollten Sie beide angeben.

[core]
# single character for older versions
commentChar = "#"
# string for newer versions (which will override commentChar
# because it comes later in the file)
commentString = "//"
core.filesRefLockTimeout

Die Zeitdauer in Millisekunden, die wiederholt versucht wird, eine einzelne Referenz zu sperren. Wert 0 bedeutet, nicht wiederholt zu versuchen; -1 bedeutet, unbegrenzt zu versuchen. Standard ist 100 (d.h. 100 ms Wiederholungsversuch).

core.packedRefsTimeout

Die Zeitdauer in Millisekunden, die wiederholt versucht wird, die Datei packed-refs zu sperren. Wert 0 bedeutet, nicht wiederholt zu versuchen; -1 bedeutet, unbegrenzt zu versuchen. Standard ist 1000 (d.h. 1 Sekunde Wiederholungsversuch).

core.pager

Text-Viewer, der von Git-Befehlen verwendet wird (z.B. *less*). Der Wert ist für die Interpretation durch die Shell bestimmt. Die Reihenfolge der Präferenz ist die Umgebungsvariable $GIT_PAGER, dann die Konfiguration core.pager, dann $PAGER und dann der bei der Kompilierung ausgewählte Standardwert (normalerweise *less*).

Wenn die Umgebungsvariable LESS nicht gesetzt ist, setzt Git sie auf FRX (wenn die Umgebungsvariable LESS gesetzt ist, ändert Git sie nicht). Wenn Sie Git's Standardeinstellung für LESS selektiv überschreiben möchten, können Sie core.pager z.B. auf less -S setzen. Dies wird von Git an die Shell übergeben, die den endgültigen Befehl in LESS=FRX less -S übersetzt. Die Umgebung setzt die Option S nicht, aber die Kommandozeile tut dies und weist less an, lange Zeilen abzuschneiden. Ebenso wird durch das Setzen von core.pager auf less -+F die durch die Umgebung vorgegebene Option F auf der Kommandozeile deaktiviert, was das Verhalten von less "beenden, wenn ein Bildschirm" deaktiviert. Man kann für bestimmte Befehle spezielle Flags aktivieren: Zum Beispiel aktiviert das Setzen von pager.blame auf less -S die Zeilenabschneidung nur für git blame.

Ebenso, wenn die Umgebungsvariable LV nicht gesetzt ist, setzt Git sie auf -c. Sie können diese Einstellung überschreiben, indem Sie LV mit einem anderen Wert exportieren oder core.pager auf lv +c setzen.

core.whitespace

Eine durch Kommas getrennte Liste gängiger Whitespace-Probleme, auf die hingewiesen werden soll. *git diff* verwendet color.diff.whitespace, um sie hervorzuheben, und *git apply --whitespace=error* betrachtet sie als Fehler. Sie können mit einem führenden - einige davon deaktivieren (z.B. *-trailing-space*).

  • blank-at-eol behandelt nachfolgende Leerzeichen am Ende der Zeile als Fehler (standardmäßig aktiviert).

  • space-before-tab behandelt ein Leerzeichen, das unmittelbar vor einem Tabulatorzeichen im anfänglichen Einzugsteil der Zeile erscheint, als Fehler (standardmäßig aktiviert).

  • indent-with-non-tab behandelt eine Zeile, die mit Leerzeichen anstelle der entsprechenden Tabs eingerückt ist, als Fehler (standardmäßig nicht aktiviert).

  • tab-in-indent behandelt ein Tabulatorzeichen im anfänglichen Einzugsteil der Zeile als Fehler (standardmäßig nicht aktiviert).

  • blank-at-eof behandelt leere Zeilen am Ende der Datei als Fehler (standardmäßig aktiviert).

  • trailing-space ist eine Kurzform für blank-at-eol und blank-at-eof.

  • cr-at-eol behandelt einen Wagenrücklauf am Ende der Zeile als Teil des Zeilenabschlusses, d.h. mit ihm löst trailing-space nicht aus, wenn das Zeichen vor einem solchen Wagenrücklauf kein Whitespace ist (standardmäßig nicht aktiviert).

  • tabwidth=<n> gibt an, wie viele Zeichenpositionen ein Tabulator einnimmt; dies ist relevant für indent-with-non-tab und wenn Git Fehler vom Typ tab-in-indent behebt. Die Standard-Tabulatorbreite ist 8. Zulässige Werte sind 1 bis 63.

core.fsync

Eine durch Kommas getrennte Liste von Komponenten des Repositorys, die beim Erstellen oder Ändern über core.fsyncMethod gehärtet werden sollen. Sie können die Härtung von Komponenten durch Voranstellen eines - deaktivieren. Nicht gehärtete Elemente können im Falle einer unsauberen Systemabschaltung verloren gehen. Sofern Sie keine speziellen Anforderungen haben, wird empfohlen, diese Option leer zu lassen oder eine der Optionen committed, added oder all zu wählen.

Wenn diese Konfiguration angetroffen wird, beginnt die Menge der Komponenten mit dem plattformspezifischen Standardwert, deaktivierte Komponenten werden entfernt und zusätzliche Komponenten hinzugefügt. none setzt den Zustand zurück, so dass der plattformspezifische Standardwert ignoriert wird.

Der leere String setzt die fsync-Konfiguration auf den plattformspezifischen Standard zurück. Der Standardwert auf den meisten Plattformen entspricht core.fsync=committed,-loose-object, was eine gute Leistung bietet, aber im Falle einer unsauberen Systemabschaltung zu Datenverlusten führen kann.

  • none löscht die Menge der fsynced Komponenten.

  • loose-object härtet lose Objekte, die dem Repository hinzugefügt werden.

  • pack härtet Objekte, die dem Repository in Packfile-Form hinzugefügt werden.

  • pack-metadata härtet Packfile-Bitmaps und Indizes.

  • commit-graph härtet die Commit-Graph-Datei.

  • index härtet den Index, wenn er modifiziert wird.

  • objects ist eine aggregierte Option, die loose-object,pack entspricht.

  • reference härtet Referenzen, die im Repository modifiziert wurden.

  • derived-metadata ist eine aggregierte Option, die pack-metadata,commit-graph entspricht.

  • committed ist eine aggregierte Option, die derzeit objects entspricht. Dieser Modus opfert etwas Leistung, um sicherzustellen, dass mit git commit oder ähnlichen Befehlen im Repository committete Arbeit gehärtet wird.

  • added ist eine aggregierte Option, die derzeit committed,index entspricht. Dieser Modus opfert zusätzliche Leistung, um sicherzustellen, dass die Ergebnisse von Befehlen wie git add und ähnlichen Operationen gehärtet werden.

  • all ist eine aggregierte Option, die alle einzelnen Komponenten oben synchronisiert.

core.fsyncMethod

Ein Wert, der die Strategie angibt, die Git zum Härten von Repository-Daten mithilfe von fsync und verwandten Primitiven verwendet.

  • fsync verwendet den fsync()-Systemaufruf oder plattformspezifische Äquivalente.

  • writeout-only sendet Pagecache-Writeback-Anforderungen, aber je nach Dateisystem und Speicherhardware können Daten, die dem Repository hinzugefügt werden, im Falle eines Systemabsturzes nicht dauerhaft sein. Dies ist der Standardmodus unter macOS.

  • batch aktiviert einen Modus, der Writeout-Only-Flushes verwendet, um mehrere Updates im Disk-Writeback-Cache zu speichern und dann einen einzigen vollständigen fsync einer Dummy-Datei durchführt, um den Disk-Cache-Flush am Ende der Operation auszulösen.

    Derzeit gilt der *batch*-Modus nur für lose Objektdateien. Andere Repository-Daten werden haltbar gemacht, als ob fsync angegeben worden wäre. Es wird erwartet, dass dieser Modus auf macOS für auf HFS+ oder APFS-Dateisystemen gespeicherte Repos und unter Windows für auf NTFS- oder ReFS-Dateisystemen gespeicherte Repos genauso sicher ist wie fsync.

core.fsyncObjectFiles

Dieses Boolean aktiviert fsync() beim Schreiben von Objektdateien. Diese Einstellung ist veraltet. Verwenden Sie stattdessen core.fsync.

Diese Einstellung betrifft Daten, die im losen Objektformat zum Git-Repository hinzugefügt werden. Wenn auf true gesetzt, wird Git einen fsync- oder ähnlichen Systemaufruf ausgeben, um Caches zu leeren, damit lose Objekte bei einem unsauberen System-Shutdown konsistent bleiben.

core.preloadIndex

Paralleles Vorladen des Index für Operationen wie git diff aktivieren

Dies kann Operationen wie git diff und git status beschleunigen, insbesondere auf Dateisystemen wie NFS, die schwache Caching-Semantik und damit relativ hohe IO-Latenzen aufweisen. Wenn aktiviert, wird Git den Indexvergleich mit den Dateisystemdaten parallel durchführen, was überlappende IOs ermöglicht. Standard ist true.

core.unsetenvvars

Nur Windows: Kommagetrennte Liste von Umgebungsvariablennamen, die vor dem Starten eines anderen Prozesses unset werden müssen. Standard ist PERL5LIB, um der Tatsache Rechnung zu tragen, dass Git für Windows auf seinem eigenen Perl-Interpreter besteht.

core.createObject

Sie können dies auf link setzen, in diesem Fall werden ein Hardlink gefolgt von einem Löschen der Quelle verwendet, um sicherzustellen, dass die Objekterstellung keine vorhandenen Objekte überschreibt.

Auf einigen Dateisystem-/Betriebssystemkombinationen ist dies unzuverlässig. Setzen Sie diese Konfigurationseinstellung dort auf rename; dies entfernt jedoch die Prüfung, die sicherstellt, dass vorhandene Objektdateien nicht überschrieben werden.

core.notesRef

Beim Anzeigen von Commit-Nachrichten werden auch Notizen angezeigt, die in der angegebenen Referenz gespeichert sind. Die Referenz muss vollständig qualifiziert sein. Wenn die angegebene Referenz nicht existiert, ist dies kein Fehler, sondern bedeutet, dass keine Notizen gedruckt werden sollen.

Diese Einstellung ist standardmäßig auf "refs/notes/commits" gesetzt und kann durch die Umgebungsvariable GIT_NOTES_REF überschrieben werden. Siehe git-notes[1].

core.commitGraph

Wenn true, liest Git die Commit-Graph-Datei (falls vorhanden), um die Graphstruktur von Commits zu parsen. Standard ist true. Weitere Informationen finden Sie unter git-commit-graph[1].

core.useReplaceRefs

Wenn auf false gesetzt, verhält es sich so, als ob die Option --no-replace-objects auf der Kommandozeile angegeben wurde. Weitere Informationen finden Sie unter git[1] und git-replace[1].

core.multiPackIndex

Verwendet die Multi-Pack-Index-Datei, um mehrere Packfiles mit einem einzigen Index zu verfolgen. Weitere Informationen finden Sie unter git-multi-pack-index[1]. Standard ist true.

core.sparseCheckout

Aktiviert die "Sparse Checkout"-Funktion. Weitere Informationen finden Sie unter git-sparse-checkout[1].

core.sparseCheckoutCone

Aktiviert den "Cone-Modus" der Sparse Checkout-Funktion. Wenn die Sparse Checkout-Datei eine begrenzte Anzahl von Mustern enthält, bietet dieser Modus erhebliche Leistungsvorteile. Der "Non-Cone-Modus" kann angefordert werden, um flexiblere Muster zu ermöglichen, indem diese Variable auf false gesetzt wird. Weitere Informationen finden Sie unter git-sparse-checkout[1].

core.abbrev

Legt die Länge fest, auf die Objektnamen abgekürzt werden. Wenn nicht angegeben oder auf "auto" gesetzt, wird ein geeigneter Wert basierend auf der ungefähren Anzahl der gepackten Objekte in Ihrem Repository berechnet, was hoffentlich ausreicht, damit abgekürzte Objektnamen für eine gewisse Zeit eindeutig bleiben. Wenn auf "no" gesetzt, erfolgt keine Abkürzung und die Objektnamen werden in voller Länge angezeigt. Die Mindestlänge ist 4.

core.maxTreeDepth

Die maximale Tiefe, die Git beim Durchlaufen eines Baumes rekursiv vorgeht (z. B. "a/b/cde/f" hat eine Tiefe von 4). Dies ist eine Notfallmaßnahme, damit Git sauber abbrechen kann, und muss im Allgemeinen nicht angepasst werden. Wenn Git mit MSVC kompiliert wird, beträgt der Standardwert 512. Andernfalls beträgt der Standardwert 2048.

credential.helper

Gibt einen externen Helfer an, der aufgerufen wird, wenn ein Benutzername oder ein Passwort benötigt wird; der Helfer kann externe Speicher konsultieren, um die Eingabe von Anmeldeinformationen durch den Benutzer zu vermeiden. Dies ist normalerweise der Name eines Anmeldeinformationshelfers mit möglichen Argumenten, kann aber auch ein absoluter Pfad mit Argumenten sein oder, wenn er mit ! eingeleitet wird, Shell-Befehle.

Beachten Sie, dass mehrere Helfer definiert sein können. Siehe gitcredentials[7] für Details und Beispiele.

credential.interactive

Standardmäßig fragen Git und alle konfigurierten Anmeldeinformationshelfer nach Benutzereingaben, wenn neue Anmeldeinformationen benötigt werden. Viele dieser Helfer werden aufgrund gespeicherter Anmeldeinformationen erfolgreich sein, wenn diese Anmeldeinformationen noch gültig sind. Um die Möglichkeit der Benutzerinteraktivität durch Git zu vermeiden, setzen Sie credential.interactive=false. Einige Anmeldeinformationshelfer berücksichtigen diese Option ebenfalls.

credential.useHttpPath

Bei der Abfrage von Anmeldeinformationen wird die "Pfad"-Komponente einer http- oder https-URL als wichtig betrachtet. Standard ist false. Weitere Informationen finden Sie unter gitcredentials[7].

credential.sanitizePrompt

Standardmäßig dürfen Benutzernamen und Hosts, die als Teil der Passwortabfrage angezeigt werden, keine Steuerzeichen enthalten (sie werden standardmäßig URL-kodiert). Konfigurieren Sie diese Einstellung auf false, um dieses Verhalten zu überschreiben.

credential.protectProtocol

Standardmäßig sind Wagenrücklaufzeichen im Protokoll nicht erlaubt, das verwendet wird, wenn Git mit einem Anmeldeinformationshelfer kommuniziert. Diese Einstellung ermöglicht es Benutzern, diesen Standard zu überschreiben.

credential.username

Wenn für eine Netzwerauthentifizierung kein Benutzername festgelegt ist, wird dieser Benutzername standardmäßig verwendet. Siehe credential.<context>.* unten und gitcredentials[7].

credential.<url>.*

Jede der credential.* Optionen oben kann selektiv auf einige Anmeldeinformationen angewendet werden. Zum Beispiel würde "credential.https://example.com.username" den Standardbenutzernamen nur für https-Verbindungen zu example.com festlegen. Siehe gitcredentials[7] für Details, wie URLs abgeglichen werden.

credentialCache.ignoreSIGHUP

Weist den Daemon von git-credential-cache an, SIGHUP zu ignorieren, anstatt zu beenden.

credentialStore.lockTimeoutMS

Die Zeitdauer in Millisekunden, die git-credential-store bei dem Versuch, die Anmeldeinformationsdatei zu sperren, wiederholt. Ein Wert von 0 bedeutet kein Wiederholungsversuch; -1 bedeutet unbegrenzte Versuche. Standard ist 1000 (d. h. Wiederholung für 1 Sekunde).

diff.autoRefreshIndex

Wenn git diff verwendet wird, um Vergleiche mit Arbeitsbaumdateien durchzuführen, werden reine Statusänderungen nicht als geändert betrachtet. Stattdessen wird git update-index --refresh stillschweigend ausgeführt, um die Statusinformationen für Pfade zu aktualisieren, deren Inhalte im Arbeitsbaum mit den Inhalten im Index übereinstimmen. Diese Option ist standardmäßig true. Beachten Sie, dass dies nur git diff Porcelain betrifft und nicht Low-Level-diff-Befehle wie git diff-files.

diff.dirstat

Eine kommagetrennte Liste von --dirstat-Parametern, die das Standardverhalten der Option --dirstat für git-diff[1] und ähnliche Befehle angibt. Die Standardwerte können auf der Kommandozeile überschrieben werden (mit --dirstat=<param>,...). Die Fallback-Standardwerte (wenn nicht durch diff.dirstat geändert) sind changes,noncumulative,3. Die folgenden Parameter sind verfügbar

changes

Berechnet die Dirstat-Zahlen durch Zählen der aus der Quelle entfernten oder in das Ziel hinzugefügten Zeilen. Dies ignoriert den Umfang reiner Codebewegungen innerhalb einer Datei. Mit anderen Worten, das Neuordnen von Zeilen in einer Datei wird nicht so stark gezählt wie andere Änderungen. Dies ist das Standardverhalten, wenn kein Parameter angegeben wird.

lines

Berechnet die Dirstat-Zahlen, indem die reguläre zeilenbasierte Diff-Analyse durchgeführt und die Anzahl der entfernten/hinzugefügten Zeilen summiert wird. (Für Binärdateien werden stattdessen 64-Byte-Chunks gezählt, da Binärdateien kein natürliches Konzept von Zeilen haben.) Dies ist ein teureres --dirstat-Verhalten als das changes-Verhalten, zählt aber auch neu angeordnete Zeilen innerhalb einer Datei ebenso wie andere Änderungen. Die resultierende Ausgabe stimmt mit dem überein, was Sie von den anderen --*stat-Optionen erhalten.

files

Berechnet die Dirstat-Zahlen durch Zählen der Anzahl der geänderten Dateien. Jede geänderte Datei zählt gleichmäßig in der Dirstat-Analyse. Dies ist das rechnerisch günstigste --dirstat-Verhalten, da es den Dateiinhalt überhaupt nicht berücksichtigen muss.

cumulative

Zählt die Änderungen in einem Unterverzeichnis auch für das übergeordnete Verzeichnis. Beachten Sie, dass bei Verwendung von cumulative die Summe der angezeigten Prozentsätze 100 % überschreiten kann. Das Standardverhalten (nicht kumulativ) kann mit dem Parameter noncumulative angegeben werden.

<limit>

Ein Integer-Parameter gibt einen Schwellenwertprozentsatz an (standardmäßig 3 %). Verzeichnisse, die weniger als dieser Prozentsatz der Änderungen beitragen, werden nicht in der Ausgabe angezeigt.

Beispiel: Das Folgende zählt geänderte Dateien, ignoriert aber Verzeichnisse mit weniger als 10 % der gesamten geänderten Dateien und akkumuliert Unterverzeichnisanzahlen in den übergeordneten Verzeichnissen: files,10,cumulative.

diff.statNameWidth

Begrenzt die Breite des Dateinamens im --stat-Output. Wenn gesetzt, gilt dies für alle Befehle, die --stat-Output generieren, außer format-patch.

diff.statGraphWidth

Begrenzt die Breite des Graphenteils im --stat-Output. Wenn gesetzt, gilt dies für alle Befehle, die --stat-Output generieren, außer format-patch.

diff.context

Generiert Diffs mit <n> Zeilen Kontext anstelle des Standardwerts von 3. Dieser Wert wird durch die Option -U überschrieben.

diff.interHunkContext

Zeigt den Kontext zwischen Diff-Hunks bis zur angegebenen Anzahl von Zeilen an und verschmilzt dadurch nahe beieinander liegende Hunks. Dieser Wert dient als Standard für die Kommandozeilenoption --inter-hunk-context.

diff.external

Wenn diese Konfigurationsvariable gesetzt ist, wird die Diff-Generierung nicht mit der internen Diff-Maschine durchgeführt, sondern mit dem angegebenen Befehl. Kann mit der Umgebungsvariable GIT_EXTERNAL_DIFF überschrieben werden. Der Befehl wird mit Parametern aufgerufen, wie unter "git Diffs" in git[1] beschrieben. Hinweis: Wenn Sie ein externes Diff-Programm nur für eine Teilmenge Ihrer Dateien verwenden möchten, sollten Sie stattdessen gitattributes[5] verwenden.

diff.trustExitCode

Wenn dieser boolesche Wert auf true gesetzt ist, wird erwartet, dass der Befehl diff.external den Exit-Code 0 zurückgibt, wenn er die Eingabedateien als gleich betrachtet, oder 1, wenn er sie als unterschiedlich betrachtet, wie diff(1). Wenn er auf false gesetzt ist, was der Standard ist, wird erwartet, dass der Befehl unabhängig von der Gleichheit den Exit-Code 0 zurückgibt. Jeder andere Exit-Code führt dazu, dass Git einen fatalen Fehler meldet.

diff.ignoreSubmodules

Legt den Standardwert für --ignore-submodules fest. Beachten Sie, dass dies nur git diff Porcelain betrifft und nicht Low-Level-diff-Befehle wie git diff-files. git checkout und git switch berücksichtigen diese Einstellung ebenfalls, wenn sie nicht committete Änderungen melden. Wenn sie auf all gesetzt ist, wird die Submodulübersicht, die normalerweise von git commit und git status angezeigt wird, wenn status.submoduleSummary gesetzt ist, deaktiviert, es sei denn, sie wird durch die Verwendung der Kommandozeilenoption --ignore-submodules überschrieben. Die git submodule-Befehle sind von dieser Einstellung nicht betroffen. Standardmäßig ist dies auf untracked gesetzt, sodass alle nicht nachverfolgten Submodule ignoriert werden.

diff.mnemonicPrefix

Wenn gesetzt, verwendet git diff ein Präfixpaar, das sich vom Standard a/ und b/ unterscheidet, abhängig davon, was verglichen wird. Wenn diese Konfiguration aktiv ist, tauscht die Ausgabe von Reverse-Diffs auch die Reihenfolge der Präfixe.

git diff

vergleicht den (i)ndex und den (w)ork tree;

git diff HEAD

vergleicht einen (c)ommit und den (w)ork tree;

git diff --cached

vergleicht einen (c)ommit und den (i)ndex;

git diff HEAD:<file1> <file2>

vergleicht ein (o)bjekt und eine (w)ork tree-Entität;

git diff --no-index <a> <b>

vergleicht zwei Nicht-Git-Dinge <a> und <b>.

diff.noPrefix

Wenn gesetzt, zeigt git diff kein Quell- oder Zielpräfix an.

diff.srcPrefix

Wenn gesetzt, verwendet git diff dieses Quellpräfix. Standard ist a/.

diff.dstPrefix

Wenn gesetzt, verwendet git diff dieses Zielpräfix. Standard ist b/.

diff.relative

Wenn auf true gesetzt, zeigt git diff keine Änderungen außerhalb des Verzeichnisses an und zeigt Pfadnamen relativ zum aktuellen Verzeichnis an.

diff.orderFile

Datei, die angibt, wie Dateien innerhalb eines Diffs geordnet werden sollen. Siehe die Option -O für git-diff[1] für Details. Wenn diff.orderFile ein relativer Pfadname ist, wird er relativ zum Stamm des Arbeitsverzeichnisses behandelt.

diff.renameLimit

Die Anzahl der Dateien, die im exklusiven Teil der Kopier-/Umbenennungserkennung berücksichtigt werden; entspricht der Option git diff -l. Wenn nicht gesetzt, beträgt der Standardwert derzeit 1000. Diese Einstellung hat keine Auswirkung, wenn die Umbenennungserkennung deaktiviert ist.

diff.renames

Ob und wie Git Umbenennungen erkennt. Wenn auf false gesetzt, ist die Umbenennungserkennung deaktiviert. Wenn auf true gesetzt, ist die grundlegende Umbenennungserkennung aktiviert. Wenn auf copies oder copy gesetzt, erkennt Git auch Kopien. Standard ist true. Beachten Sie, dass dies nur git diff Porcelain wie git-diff[1] und git-log[1] betrifft und nicht Low-Level-Befehle wie git-diff-files[1].

diff.suppressBlankEmpty

Ein boolescher Wert, der das Standardverhalten unterdrückt, eine Leerstelle vor jeder leeren Ausgabespur zu drucken. Standard ist false.

diff.submodule

Gibt das Format an, in dem Unterschiede bei Submodulen angezeigt werden. Das short-Format zeigt nur die Namen der Commits am Anfang und Ende des Bereichs an. Das log-Format listet die Commits im Bereich auf, wie git-submodule summary. Das diff-Format zeigt einen Inline-Diff der geänderten Inhalte des Submoduls. Standard ist short.

diff.wordRegex

Ein POSIX Extended Regular Expression, das verwendet wird, um zu bestimmen, was ein "Wort" ist, wenn Wort-für-Wort-Differenzberechnungen durchgeführt werden. Zeichensequenzen, die dem regulären Ausdruck entsprechen, sind "Wörter", alle anderen Zeichen sind zu ignorierende Leerzeichen.

diff.<driver>.command

Der benutzerdefinierte Diff-Treiberbefehl. Siehe gitattributes[5] für Details.

diff.<driver>.trustExitCode

Wenn dieser boolesche Wert auf true gesetzt ist, wird erwartet, dass der Befehl diff.<driver>.command den Exit-Code 0 zurückgibt, wenn er die Eingabedateien als gleich betrachtet, oder 1, wenn er sie als unterschiedlich betrachtet, wie diff(1). Wenn er auf false gesetzt ist, was der Standard ist, wird erwartet, dass der Befehl unabhängig von der Gleichheit den Exit-Code 0 zurückgibt. Jeder andere Exit-Code führt dazu, dass Git einen fatalen Fehler meldet.

diff.<driver>.xfuncname

Der reguläre Ausdruck, den der Diff-Treiber verwenden sollte, um den Hunk-Header zu erkennen. Ein integriertes Muster kann ebenfalls verwendet werden. Siehe gitattributes[5] für Details.

diff.<driver>.binary

Setzen Sie diese Option auf true, damit der Diff-Treiber Dateien als binär behandelt. Siehe gitattributes[5] für Details.

diff.<driver>.textconv

Der Befehl, den der Diff-Treiber aufrufen sollte, um die textkonvertierte Version einer Datei zu generieren. Das Ergebnis der Konvertierung wird verwendet, um einen lesbaren Diff zu generieren. Siehe gitattributes[5] für Details.

diff.<driver>.wordRegex

Der reguläre Ausdruck, den der Diff-Treiber verwenden sollte, um Wörter in einer Zeile zu trennen. Siehe gitattributes[5] für Details.

diff.<driver>.cachetextconv

Setzen Sie diese Option auf true, damit der Diff-Treiber die Textkonvertierungsergebnisse cacht. Siehe gitattributes[5] für Details.

diff.indentHeuristic

Setzen Sie diese Option auf false, um die Standardheuristiken zu deaktivieren, die Diff-Hunk-Grenzen verschieben, um Patches besser lesbar zu machen.

diff.algorithm

Wählt einen Diff-Algorithmus aus. Die Varianten sind wie folgt:

default
myers

Der grundlegende Greedy-Diff-Algorithmus. Derzeit ist dies der Standard.

minimal

Verwendet zusätzliche Zeit, um sicherzustellen, dass der kleinstmögliche Diff erzeugt wird.

patience

Verwendet den "Patience Diff"-Algorithmus bei der Generierung von Patches.

histogram

Dieser Algorithmus erweitert den Patience-Algorithmus, um "gemeinsame Elemente mit geringer Häufigkeit" zu unterstützen.

diff.wsErrorHighlight

Hebt Leerzeichenfehler in den Zeilen context, old oder new des Diffs hervor. Mehrere Werte werden durch Kommas getrennt, none setzt vorherige Werte zurück, default setzt die Liste auf new zurück und all ist eine Kurzform für old,new,context. Die Leerzeichenfehler werden mit color.diff.whitespace eingefärbt. Die Kommandozeilenoption --ws-error-highlight=<kind> überschreibt diese Einstellung.

diff.colorMoved

Wenn auf einen gültigen <mode> oder einen true-Wert gesetzt, werden verschobene Zeilen in einem Diff unterschiedlich eingefärbt. Details zu gültigen Modi finden Sie unter --color-moved in git-diff[1]. Wenn einfach auf true gesetzt, wird der Standard-Farbmodus verwendet. Wenn auf false gesetzt, werden verschobene Zeilen nicht eingefärbt.

diff.colorMovedWS

Wenn verschobene Zeilen eingefärbt werden (z. B. mit der Einstellung diff.colorMoved), steuert diese Option den Modus, wie Leerzeichen behandelt werden. Details zu gültigen Modi finden Sie unter --color-moved-ws in git-diff[1].

diff.tool

Steuert, welcher Diff-Tool von git-difftool[1] verwendet wird. Diese Variable überschreibt den in merge.tool konfigurierten Wert. Die folgende Liste zeigt die gültigen integrierten Werte. Jeder andere Wert wird als benutzerdefiniertes Diff-Tool behandelt und erfordert, dass eine entsprechende difftool.<tool>.cmd-Variable definiert ist.

diff.guitool

Steuert, welches Diff-Tool von git-difftool[1] verwendet wird, wenn die Option -g/--gui angegeben wird. Diese Variable überschreibt den in merge.guitool konfigurierten Wert. Die folgende Liste zeigt die gültigen integrierten Werte. Jeder andere Wert wird als benutzerdefiniertes Diff-Tool behandelt und erfordert, dass eine entsprechende difftool.<guitool>.cmd-Variable definiert ist.

  • araxis

  • bc

  • codecompare

  • deltawalker

  • diffmerge

  • diffuse

  • ecmerge

  • emerge

  • examdiff

  • guiffy

  • gvimdiff

  • kdiff3

  • kompare

  • meld

  • nvimdiff

  • opendiff

  • p4merge

  • smerge

  • tkdiff

  • vimdiff

  • vscode

  • winmerge

  • xxdiff

difftool.<tool>.cmd

Gibt den Befehl zur Ausführung des angegebenen Diff-Tools an. Der angegebene Befehl wird in der Shell mit den folgenden verfügbaren Variablen ausgewertet: LOCAL wird auf den Namen der temporären Datei gesetzt, die den Inhalt des Diff-Pre-Images enthält, und REMOTE wird auf den Namen der temporären Datei gesetzt, die den Inhalt des Diff-Post-Images enthält.

Siehe die Option --tool=<tool> in git-difftool[1] für weitere Details.

difftool.<tool>.path

Überschreibt den Pfad für das gegebene Tool. Dies ist nützlich, falls Ihr Tool nicht im PATH enthalten ist.

difftool.trustExitCode

Beendet difftool, wenn das aufgerufene Diff-Tool einen von Null verschiedenen Exit-Status zurückgibt.

Siehe die Option --trust-exit-code in git-difftool[1] für weitere Details.

difftool.prompt

Fordert zur Bestätigung vor jeder Ausführung des Diff-Tools auf.

difftool.guiDefault

Setzen Sie auf true, um diff.guitool standardmäßig zu verwenden (entspricht der Angabe des Arguments --gui), oder auto, um diff.guitool oder diff.tool auszuwählen, je nachdem, ob eine DISPLAY-Umgebungsvariable vorhanden ist. Der Standard ist false, wobei das Argument --gui explizit angegeben werden muss, damit diff.guitool verwendet wird.

extensions.*

Sofern nicht anders angegeben, ist es ein Fehler, eine Erweiterung anzugeben, wenn core.repositoryFormatVersion nicht 1 ist. Siehe gitrepository-layout[5].

compatObjectFormat

Gibt einen kompatiblen Hash-Algorithmus an, der verwendet werden soll. Die akzeptablen Werte sind sha1 und sha256. Der angegebene Wert muss sich von dem Wert von extensions.objectFormat unterscheiden. Dies ermöglicht die Client-seitige Interoperabilität zwischen Git-Repositories, deren ObjectFormat mit diesem compatObjectFormat übereinstimmt. Insbesondere, wenn vollständig implementiert, werden Pushes und Pulls von einem Repository, dessen ObjectFormat mit compatObjectFormat übereinstimmt, unterstützt. Außerdem können OIDs, die in compatObjectFormat kodiert sind, zusätzlich zu OIDs, die mit objectFormat kodiert sind, verwendet werden, um lokal Objekte anzugeben.

Beachten Sie, dass die Funktionalität, die durch diese Erweiterung aktiviert wird, unvollständig ist und Änderungen unterworfen ist. Sie existiert derzeit nur, um die Entwicklung und das Testen der zugrunde liegenden Funktion zu ermöglichen, und ist nicht für Endbenutzer konzipiert.

noop

Diese Erweiterung ändert das Verhalten von Git überhaupt nicht. Sie ist nur zum Testen der Format-1-Kompatibilität nützlich.

Aus historischen Gründen wird diese Erweiterung unabhängig von der Einstellung core.repositoryFormatVersion berücksichtigt.

noop-v1

Diese Erweiterung ändert das Verhalten von Git überhaupt nicht. Sie ist nur zum Testen der Format-1-Kompatibilität nützlich.

objectFormat

Gibt den zu verwendenden Hash-Algorithmus an. Die akzeptablen Werte sind sha1 und sha256. Wenn nicht angegeben, wird sha1 angenommen.

Beachten Sie, dass diese Einstellung nur von git-init[1] oder git-clone[1] gesetzt werden sollte. Ein Versuch, sie nach der Initialisierung zu ändern, wird nicht funktionieren und zu schwer zu diagnostizierenden Problemen führen.

partialClone

Wenn aktiviert, zeigt dies an, dass das Repository mit einem teilweisen Klon erstellt wurde (oder später einen teilweisen Fetch durchgeführt hat) und dass die Remote bestimmte unerwünschte Objekte weggelassen haben könnte. Eine solche Remote wird als "Promisor Remote" bezeichnet und verspricht, dass alle solchen weggelassenen Objekte zukünftig von ihr abgerufen werden können.

Der Wert dieses Schlüssels ist der Name der Promisor Remote.

Aus historischen Gründen wird diese Erweiterung unabhängig von der Einstellung core.repositoryFormatVersion berücksichtigt.

preciousObjects

Wenn aktiviert, zeigt dies an, dass Objekte im Repository NICHT gelöscht werden dürfen (z. B. durch git-prune oder git repack -d).

Aus historischen Gründen wird diese Erweiterung unabhängig von der Einstellung core.repositoryFormatVersion berücksichtigt.

refStorage

Gibt das zu verwendende Ref-Speicherformat an. Die akzeptablen Werte sind

  • files für lose Dateien mit "packed-refs". Dies ist der Standardwert.

  • reftable für das Reftable-Format. Dieses Format ist experimentell und seine Interna können sich ändern.

Beachten Sie, dass diese Einstellung nur von git-init[1] oder git-clone[1] gesetzt werden sollte. Ein Versuch, sie nach der Initialisierung zu ändern, wird nicht funktionieren und zu schwer zu diagnostizierenden Problemen führen.

relativeWorktrees

Wenn aktiviert, zeigt dies an, dass mindestens ein Arbeitsbaum mit relativen Pfaden verknüpft wurde. Wird automatisch gesetzt, wenn ein Arbeitsbaum mit der Option --relative-paths oder mit der auf true gesetzten Konfiguration worktree.useRelativePaths erstellt oder repariert wurde.

worktreeConfig

Wenn aktiviert, laden Arbeitsbäume Konfigurationseinstellungen aus der Datei $GIT_DIR/config.worktree zusätzlich zur Datei $GIT_COMMON_DIR/config. Beachten Sie, dass $GIT_COMMON_DIR und $GIT_DIR für den Hauptarbeitsbaum identisch sind, während andere Arbeitsbäume $GIT_DIR gleich $GIT_COMMON_DIR/worktrees/<id>/ haben. Die Einstellungen in der Datei config.worktree überschreiben die Einstellungen aus anderen Konfigurationsdateien.

Beim Aktivieren dieser Erweiterung müssen Sie darauf achten, bestimmte Werte aus der gemeinsamen Konfigurationsdatei in die config.worktree-Datei des Hauptarbeitsbaums zu verschieben, falls vorhanden

  • core.worktree muss von $GIT_COMMON_DIR/config nach $GIT_COMMON_DIR/config.worktree verschoben werden.

  • Wenn core.bare true ist, muss es von $GIT_COMMON_DIR/config nach $GIT_COMMON_DIR/config.worktree verschoben werden.

Es kann auch vorteilhaft sein, die Speicherorte von core.sparseCheckout und core.sparseCheckoutCone anzupassen, je nachdem, wie stark Sie die Sparse-Checkout-Einstellungen für jeden Arbeitsbaum anpassen möchten. Standardmäßig aktiviert der integrierte Befehl git sparse-checkout diese Erweiterung, weist diese Konfigurationswerte pro Arbeitsbaum zu und verwendet die Datei $GIT_DIR/info/sparse-checkout, um die Sparsity für jeden Arbeitsbaum unabhängig voneinander anzugeben. Siehe git-sparse-checkout[1] für weitere Details.

Aus historischen Gründen wird diese Erweiterung unabhängig von der Einstellung core.repositoryFormatVersion berücksichtigt.

fastimport.unpackLimit

Wenn die Anzahl der von git-fast-import[1] importierten Objekte unter diesem Limit liegt, werden die Objekte in lose Objektdateien entpackt. Wenn jedoch die Anzahl der importierten Objekte dieses Limit erreicht oder überschreitet, wird das Pack als Pack gespeichert. Das Speichern des Packs aus einem Fast-Import kann den Importvorgang beschleunigen, insbesondere auf langsamen Dateisystemen. Wenn nicht gesetzt, wird stattdessen der Wert von transfer.unpackLimit verwendet.

feature.*

Die Konfigurationseinstellungen, die mit feature. beginnen, modifizieren die Standardwerte einer Gruppe anderer Konfigurationseinstellungen. Diese Gruppen werden von der Git-Entwickler-Community als empfohlene Standardwerte erstellt und können sich ändern. Insbesondere können neue Konfigurationsoptionen mit anderen Standardwerten hinzugefügt werden.

feature.experimental

Aktiviert Konfigurationsoptionen, die neu in Git sind und für zukünftige Standardwerte in Betracht gezogen werden. Hierin enthaltene Konfigurationseinstellungen können mit jeder Veröffentlichung, einschließlich kleiner Versionsupdates, hinzugefügt oder entfernt werden. Diese Einstellungen können aufgrund ihrer Neuheit unbeabsichtigte Wechselwirkungen haben. Bitte aktivieren Sie diese Einstellung, wenn Sie interessiert sind, Feedback zu experimentellen Funktionen zu geben. Die neuen Standardwerte sind

  • fetch.negotiationAlgorithm=skipping kann die Zeiten für die Fetch-Verhandlung verbessern, indem mehr Commits auf einmal übersprungen werden, wodurch die Anzahl der Roundtrips reduziert wird.

  • pack.useBitmapBoundaryTraversal=true kann die Zeiten für die Bitmap-Traversierung verbessern, indem weniger Objekte durchlaufen werden.

  • pack.allowPackReuse=multi kann die Zeit für die Erstellung eines Packs verbessern, indem Objekte aus mehreren Packs wiederverwendet werden, anstatt nur aus einem.

  • pack.usePathWalk kann die Erstellung von Packfiles beschleunigen und die Packfiles bei bestimmten Namenskollisionen mit dem Standard-Namens-Hash von Git deutlich kleiner machen.

  • init.defaultRefFormat=reftable sorgt dafür, dass neu initialisierte Repositories das Reftable-Format zum Speichern von Referenzen verwenden. Dieses neue Format löst Probleme mit Case-insensitiven Dateisystemen, komprimiert besser und bietet bei vielen Anwendungsfällen eine deutlich bessere Leistung. Weitere Informationen zu diesem neuen Speicherformat finden Sie unter Documentation/technical/reftable.adoc.

feature.manyFiles

Aktiviert Konfigurationsoptionen, die für Repositories mit vielen Dateien im Arbeitsverzeichnis optimiert sind. Bei vielen Dateien können Befehle wie git status und git checkout langsam sein, und diese neuen Standardwerte verbessern die Leistung.

  • index.skipHash=true beschleunigt Index-Schreibvorgänge, indem keine nachfolgende Prüfsumme berechnet wird. Beachten Sie, dass Git-Versionen älter als 2.13.0 den Index nicht mehr parsen können und Git-Versionen älter als 2.40.0 während git fsck einen beschädigten Index melden.

  • index.version=4 aktiviert die Pfadpräfix-Kompression im Index.

  • core.untrackedCache=true aktiviert den Cache für nicht verfolgte Dateien. Diese Einstellung geht davon aus, dass mtime auf Ihrem Rechner funktioniert.

fetch.recurseSubmodules

Diese Option steuert, ob git fetch (und der zugrunde liegende Fetch in git pull) rekursiv in befüllte Submodule holt. Diese Option kann entweder auf einen booleschen Wert oder auf on-demand gesetzt werden. Wenn sie auf einen booleschen Wert gesetzt wird, ändert sich das Verhalten von fetch und pull, so dass sie bedingungslos in Submodule rekursieren, wenn sie auf true gesetzt ist, oder gar nicht rekursieren, wenn sie auf false gesetzt ist. Wenn sie auf on-demand gesetzt ist, rekursieren fetch und pull nur in ein befülltes Submodul, wenn sein Superprojekt einen Commit abruft, der die Referenz des Submoduls aktualisiert. Standardmäßig ist sie on-demand oder auf den Wert von submodule.recurse gesetzt, falls dieser gesetzt ist.

fetch.fsckObjects

Wenn auf true gesetzt, prüft git-fetch-pack alle geholten Objekte. Lesen Sie transfer.fsckObjects, um zu sehen, was geprüft wird. Standardmäßig false. Wenn nicht gesetzt, wird der Wert von transfer.fsckObjects stattdessen verwendet.

fetch.fsck.<msg-id>

Verhält sich wie fsck.<msg-id>, wird aber von git-fetch-pack[1] anstelle von git-fsck[1] verwendet. Einzelheiten finden Sie in der Dokumentation zu fsck.<msg-id>.

fetch.fsck.skipList

Verhält sich wie fsck.skipList, wird aber von git-fetch-pack[1] anstelle von git-fsck[1] verwendet. Einzelheiten finden Sie in der Dokumentation zu fsck.skipList.

fetch.unpackLimit

Wenn die Anzahl der über den Git-nativen Transfer geholten Objekte unter diesem Limit liegt, werden die Objekte in lose Objektdateien entpackt. Wenn die Anzahl der empfangenen Objekte dieses Limit erreicht oder überschreitet, wird das empfangene Pack als Pack gespeichert, nachdem alle fehlenden Delta-Basen hinzugefügt wurden. Das Speichern des Packs von einem Push kann den Push-Vorgang beschleunigen, insbesondere auf langsamen Dateisystemen. Wenn nicht gesetzt, wird der Wert von transfer.unpackLimit stattdessen verwendet.

fetch.prune

Wenn true, verhält sich fetch automatisch so, als ob die Option --prune auf der Kommandozeile angegeben worden wäre. Siehe auch remote.<name>.prune und den Abschnitt PRUNING in git-fetch[1].

fetch.pruneTags

Wenn true, verhält sich fetch automatisch so, als ob das Refspec refs/tags/*:refs/tags/* beim Löschen angegeben wurde, falls es noch nicht gesetzt ist. Dies ermöglicht die Einstellung sowohl dieser Option als auch von fetch.prune, um eine 1:1-Zuordnung zu den Upstream-Refs beizubehalten. Siehe auch remote.<name>.pruneTags und den Abschnitt PRUNING in git-fetch[1].

fetch.all

Wenn true, versucht fetch, alle verfügbaren Remote-Repositories zu aktualisieren. Dieses Verhalten kann durch Angabe von --no-all oder durch explizite Angabe eines oder mehrerer Remote-Repositories, von denen geholt werden soll, überschrieben werden. Standardmäßig false.

fetch.output

Steuert, wie der Status von Ref-Updates ausgegeben wird. Gültige Werte sind full und compact. Der Standardwert ist full. Einzelheiten finden Sie im Abschnitt OUTPUT in git-fetch[1].

fetch.negotiationAlgorithm

Steuert, wie Informationen über die Commits im lokalen Repository gesendet werden, wenn die Inhalte des vom Server zu sendenden Packfiles ausgehandelt werden. Setzen Sie auf "consecutive", um einen Algorithmus zu verwenden, der aufeinanderfolgende Commits durchläuft und jeden einzelnen prüft. Setzen Sie auf "skipping", um einen Algorithmus zu verwenden, der Commits überspringt, um schneller zu konvergieren, aber zu einem unnötig großen Packfile führen kann; oder setzen Sie auf "noop", um überhaupt keine Informationen zu senden, was mit ziemlicher Sicherheit zu einem unnötig großen Packfile führt, aber den Verhandlungsschritt überspringt. Setzen Sie auf "default", um zuvor getroffene Einstellungen zu überschreiben und das Standardverhalten zu verwenden. Standardmäßig ist dies normalerweise "consecutive", aber wenn feature.experimental true ist, ist der Standardwert "skipping". Unbekannte Werte führen dazu, dass git fetch einen Fehler ausgibt.

Siehe auch die Optionen --negotiate-only und --negotiation-tip in git-fetch[1].

fetch.showForcedUpdates

Auf false setzen, um --no-show-forced-updates in den Befehlen git-fetch[1] und git-pull[1] zu aktivieren. Standardmäßig true.

fetch.parallel

Gibt die maximale Anzahl von Fetch-Operationen an, die gleichzeitig parallel ausgeführt werden sollen (Submodule oder Remotes, wenn die Option --multiple von git-fetch[1] aktiv ist).

Ein Wert von 0 ergibt einen vernünftigen Standardwert. Wenn nicht gesetzt, ist der Standardwert 1.

Für Submodule kann diese Einstellung durch die Konfigurationseinstellung submodule.fetchJobs überschrieben werden.

fetch.writeCommitGraph

Auf true setzen, um nach jedem git fetch-Befehl, der ein Packfile von einem Remote-Repository herunterlädt, einen Commit-Graphen zu schreiben. Mit der Option --split erstellen die meisten Ausführungen eine sehr kleine Commit-Graph-Datei zusätzlich zu den vorhandenen Commit-Graph-Dateien. Gelegentlich werden diese Dateien zusammengeführt, und das Schreiben kann länger dauern. Ein aktualisierter Commit-Graph verbessert die Leistung vieler Git-Befehle, einschließlich git merge-base, git push -f und git log --graph. Standardmäßig false.

fetch.bundleURI

Dieser Wert speichert eine URI zum Herunterladen von Git-Objektdaten aus einer Bundle-URI, bevor ein inkrementeller Fetch vom ursprünglichen Git-Server durchgeführt wird. Dies ähnelt dem Verhalten der Option --bundle-uri in git-clone[1]. git clone --bundle-uri setzt den Wert von fetch.bundleURI, wenn die angegebene Bundle-URI eine Bundle-Liste enthält, die für inkrementelle Fetches organisiert ist.

Wenn Sie diesen Wert ändern und Ihr Repository einen Wert für fetch.bundleCreationToken hat, entfernen Sie diesen fetch.bundleCreationToken-Wert, bevor Sie vom neuen Bundle-URI abrufen.

fetch.bundleCreationToken

Wenn fetch.bundleURI zum inkrementellen Abrufen aus einer Bundle-Liste verwendet wird, die die "creationToken"-Heuristik verwendet, speichert dieser Konfigurationswert den maximalen creationToken-Wert der heruntergeladenen Bundles. Dieser Wert wird verwendet, um das Herunterladen von Bundles in Zukunft zu verhindern, wenn der angegebene creationToken nicht strikt größer als dieser Wert ist.

Die Werte für Creation Tokens werden vom Anbieter der jeweiligen Bundle-URI gewählt. Wenn Sie die URI unter fetch.bundleURI ändern, stellen Sie sicher, dass Sie den Wert für fetch.bundleCreationToken entfernen, bevor Sie abrufen.

filter.<driver>.clean

Der Befehl, der verwendet wird, um den Inhalt einer Arbeitsbaumdatei beim Einchecken in einen Blob zu konvertieren. Einzelheiten finden Sie unter gitattributes[5].

filter.<driver>.smudge

Der Befehl, der verwendet wird, um den Inhalt eines Blob-Objekts beim Auschecken in eine Arbeitsbaumdatei zu konvertieren. Einzelheiten finden Sie unter gitattributes[5].

format.attach

Aktiviert multipart/mixed-Anhänge als Standard für format-patch. Der Wert kann auch eine Zeichenkette in doppelten Anführungszeichen sein, die Anhänge als Standard aktiviert und den Wert als Trennzeichen festlegt. Siehe die Option --attach in git-format-patch[1]. Um einen früheren Wert zu widerrufen, setzen Sie ihn auf eine leere Zeichenkette.

format.from

Bietet den Standardwert für die Option --from für format-patch. Akzeptiert einen booleschen Wert oder einen Namen und eine E-Mail-Adresse. Wenn false, verwendet format-patch standardmäßig --no-from und verwendet die Commit-Autoren direkt im "From:"-Feld von Patch-Mails. Wenn true, verwendet format-patch standardmäßig --from und verwendet Ihre Committer-Identität im "From:"-Feld von Patch-Mails und fügt ein "From:"-Feld im Body der Patch-Mail hinzu, wenn es abweicht. Wenn auf einen nicht-booleschen Wert gesetzt, verwendet format-patch diesen Wert anstelle Ihrer Committer-Identität. Standardmäßig false.

format.forceInBodyFrom

Bietet den Standardwert für die Option --[no-]force-in-body-from für format-patch. Standardmäßig false.

format.numbered

Ein boolescher Wert, der Sequenznummern in Patch-Betreffzeilen aktivieren oder deaktivieren kann. Standardmäßig "auto", was sie nur aktiviert, wenn mehr als ein Patch vorhanden ist. Sie kann für alle Nachrichten aktiviert oder deaktiviert werden, indem sie auf "true" oder "false" gesetzt wird. Siehe die Option --numbered in git-format-patch[1].

format.headers

Zusätzliche E-Mail-Header, die in einen Patch aufgenommen werden sollen, der per E-Mail übermittelt wird. Siehe git-format-patch[1].

format.to
format.cc

Zusätzliche Empfänger, die in einen Patch aufgenommen werden sollen, der per E-Mail übermittelt wird. Siehe die Optionen --to und --cc in git-format-patch[1].

format.subjectPrefix

Der Standard für format-patch ist die Ausgabe von Dateien mit dem Betreff-Präfix [PATCH]. Verwenden Sie diese Variable, um dieses Präfix zu ändern.

format.coverFromDescription

Der Standardmodus für format-patch, um zu bestimmen, welche Teile des Anschreibens mit der Beschreibung des Branches gefüllt werden. Siehe die Option --cover-from-description in git-format-patch[1].

format.signature

Der Standard für format-patch ist die Ausgabe einer Signatur mit der Git-Versionsnummer. Verwenden Sie diese Variable, um diesen Standard zu ändern. Setzen Sie diese Variable auf eine leere Zeichenkette (""), um die Signaturerstellung zu unterdrücken.

format.signatureFile

Funktioniert genauso wie format.signature, nur dass der Inhalt der durch diese Variable angegebenen Datei als Signatur verwendet wird.

format.suffix

Der Standard für format-patch ist die Ausgabe von Dateien mit der Endung .patch. Verwenden Sie diese Variable, um diese Endung zu ändern (stellen Sie sicher, dass Sie den Punkt einschließen, wenn Sie ihn möchten).

format.encodeEmailHeaders

Kodiert E-Mail-Header mit Nicht-ASCII-Zeichen mit "Q-Encoding" (beschrieben in RFC 2047) für die E-Mail-Übertragung. Standardmäßig true.

format.pretty

Das Standardformat für die Ausgabe von log/show/whatchanged-Befehlen. Siehe git-log[1], git-show[1], git-whatchanged[1].

format.thread

Der Standard-Threading-Stil für git format-patch. Kann ein boolescher Wert sein oder shallow oder deep. shallow-Threading macht jede E-Mail zu einer Antwort auf den Kopf der Serie, wobei der Kopf aus dem Anschreiben, dem --in-reply-to und der ersten Patch-E-Mail in dieser Reihenfolge gewählt wird. deep-Threading macht jede E-Mail zu einer Antwort auf die vorherige. Ein wahrer boolescher Wert ist dasselbe wie shallow, und ein falscher Wert deaktiviert das Threading.

format.signOff

Ein boolescher Wert, mit dem die Option -s/--signoff von format-patch standardmäßig aktiviert werden kann. Hinweis: Das Hinzufügen des Signed-off-by-Trailers zu einem Patch sollte eine bewusste Handlung sein und bedeutet, dass Sie zertifizieren, dass Sie das Recht haben, diese Arbeit unter derselben Open-Source-Lizenz einzureichen. Weitere Informationen finden Sie im Dokument SubmittingPatches.

format.coverLetter

Ein boolescher Wert, der steuert, ob ein Anschreiben generiert wird, wenn format-patch aufgerufen wird, kann aber auch auf "auto" gesetzt werden, um nur dann ein Anschreiben zu generieren, wenn mehr als ein Patch vorhanden ist. Standardmäßig false.

format.outputDirectory

Legen Sie ein benutzerdefiniertes Verzeichnis fest, in dem die resultierenden Dateien gespeichert werden sollen, anstatt im aktuellen Arbeitsverzeichnis. Alle Verzeichniskomponenten werden erstellt.

format.filenameMaxLength

Die maximale Länge der von format-patch generierten Ausgabedateinamen; standardmäßig 64. Kann durch die Kommandozeilenoption --filename-max-length=<n> überschrieben werden.

format.useAutoBase

Ein boolescher Wert, mit dem die Option --base=auto von format-patch standardmäßig aktiviert werden kann. Kann auch auf "whenAble" gesetzt werden, um die Aktivierung von --base=auto zu ermöglichen, wenn eine geeignete Basis verfügbar ist, aber andernfalls das Hinzufügen von Basisinformationen zu überspringen, ohne dass format abbricht.

format.notes

Bietet den Standardwert für die Option --notes für format-patch. Akzeptiert einen booleschen Wert oder einen Ref, der angibt, wo Notizen bezogen werden sollen. Wenn false, verwendet format-patch standardmäßig --no-notes. Wenn true, verwendet format-patch standardmäßig --notes. Wenn auf einen nicht-booleschen Wert gesetzt, verwendet format-patch standardmäßig --notes=<ref>, wobei ref der nicht-boolesche Wert ist. Standardmäßig false.

Wenn Sie den Ref refs/notes/true verwenden möchten, verwenden Sie stattdessen diesen literalen Wert.

Diese Konfiguration kann mehrmals angegeben werden, um das Einbeziehen mehrerer Notizen-Refs zu ermöglichen. In diesem Fall verhält sie sich ähnlich wie mehrere übergebene Optionen --[no-]notes[=]. Das heißt, ein Wert von true zeigt die Standardnotizen an, ein Wert von <ref> zeigt auch Notizen aus diesem Notizen-Ref an und ein Wert von false negiert vorherige Konfigurationen und zeigt keine Notizen an.

Zum Beispiel,

[format]
	notes = true
	notes = foo
	notes = false
	notes = bar

zeigt nur Notizen von refs/notes/bar an.

format.mboxrd

Ein boolescher Wert, der das robuste "mboxrd"-Format aktiviert, wenn --stdout verwendet wird, um Zeilen, die mit ">From " beginnen, zu escapen.

format.noprefix

Wenn gesetzt, werden keine Quell- oder Zielpräfixe in Patches angezeigt. Dies ist äquivalent zur Option diff.noprefix, die von git diff verwendet wird (aber von format-patch nicht berücksichtigt wird). Beachten Sie, dass Empfänger von Patches, die Sie generieren, diese mit der Option -p0 anwenden müssen, wenn Sie diese Option setzen.

fsck.<msg-id>

Während fsck kann Git Probleme mit Legacy-Daten finden, die nicht von aktuellen Git-Versionen generiert würden und die nicht über das Netzwerk gesendet würden, wenn transfer.fsckObjects gesetzt wäre. Dieses Feature ist dazu gedacht, mit Legacy-Repositories zu arbeiten, die solche Daten enthalten.

Das Setzen von fsck.<msg-id> wird von git-fsck[1] übernommen, aber um Pushes solcher Daten zu akzeptieren, setzen Sie stattdessen receive.fsck.<msg-id>, oder um sie zu klonen oder abzurufen, setzen Sie fetch.fsck.<msg-id>.

Der Rest der Dokumentation diskutiert fsck.* der Kürze halber, aber dasselbe gilt für die entsprechenden Variablen receive.fsck.* und fetch.fsck.*.

Im Gegensatz zu Variablen wie color.ui und core.editor greifen die Variablen receive.fsck.<msg-id> und fetch.fsck.<msg-id> nicht auf die Konfiguration fsck.<msg-id> zurück, wenn sie nicht gesetzt sind. Um die gleichen fsck-Einstellungen unter verschiedenen Umständen einheitlich zu konfigurieren, müssen alle drei auf die gleichen Werte gesetzt werden.

Wenn fsck.<msg-id> gesetzt ist, können Fehler durch Konfiguration von fsck.<msg-id> in Warnungen und umgekehrt umgeschaltet werden, wobei <msg-id> die fsck-Nachrichten-ID ist und der Wert einer von error, warn oder ignore ist. Zur Bequemlichkeit wird fsck dem Fehler/der Warnung die Nachrichten-ID vorangestellt, z. B. "missingEmail: invalid author/committer line - missing email" bedeutet, dass das Setzen von fsck.missingEmail = ignore dieses Problem ausblendet.

Im Allgemeinen ist es besser, vorhandene Objekte mit Problemen mit fsck.skipList aufzulisten, anstatt die Art der Fehler aufzulisten, die diese problematischen Objekte teilen, um ignoriert zu werden, da letzteres erlaubt, dass neue Instanzen der gleichen Fehler unbemerkt bleiben.

Das Setzen eines unbekannten Werts für fsck.<msg-id> führt dazu, dass fsck abstürzt, aber das gleiche für receive.fsck.<msg-id> und fetch.fsck.<msg-id> führt nur zu einer Warnung von git.

Siehe den Abschnitt Fsck Messages in git-fsck[1] für unterstützte Werte von <msg-id>.

fsck.skipList

Der Pfad zu einer Liste von Objektnamen (d. h. eine unabgekürzte SHA-1 pro Zeile), von denen bekannt ist, dass sie auf nicht-fatale Weise fehlerhaft sind und ignoriert werden sollten. Auf Git-Versionen 2.20 und neuer werden Kommentare (#), leere Zeilen und beliebige führende und nachgestellte Leerzeichen ignoriert. Alles außer einer SHA-1 pro Zeile führt auf älteren Versionen zu einem Fehler.

Dieses Feature ist nützlich, wenn ein etabliertes Projekt akzeptiert werden soll, obwohl frühe Commits Fehler enthalten, die sicher ignoriert werden können, wie z. B. ungültige E-Mail-Adressen von Autoren. Hinweis: Beschädigte Objekte können mit dieser Einstellung nicht übersprungen werden.

Wie fsck.<msg-id> hat diese Variable entsprechende Varianten receive.fsck.skipList und fetch.fsck.skipList.

Im Gegensatz zu Variablen wie color.ui und core.editor greifen die Variablen receive.fsck.skipList und fetch.fsck.skipList nicht auf die Konfiguration fsck.skipList zurück, wenn sie nicht gesetzt sind. Um die gleichen fsck-Einstellungen unter verschiedenen Umständen einheitlich zu konfigurieren, müssen alle drei auf die gleichen Werte gesetzt werden.

Ältere Git-Versionen (vor 2.20) dokumentierten, dass die Liste der Objektnamen sortiert sein sollte. Dies war nie eine Anforderung; die Objektnamen konnten in beliebiger Reihenfolge erscheinen, aber beim Lesen der Liste verfolgten wir, ob die Liste sortiert war, für die Implementierung einer internen binären Suche, die sich mit einer bereits sortierten Liste etwas Arbeit ersparen konnte. Es sei denn, Sie hatten eine riesige Liste, gab es keinen Grund, sich die Mühe zu machen, die Liste vorab zu sortieren. Nach Git-Version 2.20 wird stattdessen eine Hash-Implementierung verwendet, sodass es keinen Grund mehr gibt, die Liste vorab zu sortieren.

fsmonitor.allowRemote

Standardmäßig weigert sich der fsmonitor-Daemon, mit netzwerkgebundenen Repositories zu arbeiten. Das Setzen von fsmonitor.allowRemote auf true überschreibt dieses Verhalten. Nur beachtet, wenn core.fsmonitor auf true gesetzt ist.

fsmonitor.socketDir

Diese Mac OS-spezifische Option, wenn sie gesetzt ist, gibt das Verzeichnis an, in dem der Unix-Domain-Socket erstellt werden soll, der für die Kommunikation zwischen dem fsmonitor-Daemon und verschiedenen Git-Befehlen verwendet wird. Das Verzeichnis muss sich auf einem nativen Mac OS-Dateisystem befinden. Nur beachtet, wenn core.fsmonitor auf true gesetzt ist.

gc.aggressiveDepth

Der Tiefenparameter, der im Delta-Komprimierungsalgorithmus von git gc --aggressive verwendet wird. Dieser hat einen Standardwert von 50, was dem Standardwert für die Option --depth entspricht, wenn --aggressive nicht verwendet wird.

Einzelheiten finden Sie in der Dokumentation zur Option --depth in git-repack[1].

gc.aggressiveWindow

Der Fenstergrößenparameter, der im Delta-Komprimierungsalgorithmus von git gc --aggressive verwendet wird. Dieser hat einen Standardwert von 250, was eine wesentlich aggressivere Fenstergröße ist als der Standardwert --window von 10.

Einzelheiten finden Sie in der Dokumentation zur Option --window in git-repack[1].

gc.auto

Wenn ungefähr mehr als diese Anzahl loser Objekte im Repository vorhanden ist, packt git gc --auto diese. Einige Porcelain-Befehle verwenden diesen Befehl, um von Zeit zu Zeit eine leichtgewichtige Garbage Collection durchzuführen. Der Standardwert ist 6700.

Das Setzen auf 0 deaktiviert nicht nur die automatische Packung basierend auf der Anzahl loser Objekte, sondern auch jede andere Heuristik, die git gc --auto sonst verwenden würde, um zu bestimmen, ob Arbeit zu tun ist, wie z. B. gc.autoPackLimit.

gc.autoPackLimit

Wenn mehr als diese Anzahl von Packs, die nicht mit einer *.keep-Datei im Repository gekennzeichnet sind, vorhanden ist, konsolidiert git gc --auto diese zu einem größeren Pack. Der Standardwert ist 50. Das Setzen auf 0 deaktiviert dies. Das Setzen von gc.auto auf 0 deaktiviert dies ebenfalls.

Siehe die Konfigurationsvariable gc.bigPackThreshold unten. Wenn sie verwendet wird, beeinflusst sie, wie das automatische Pack-Limit funktioniert.

gc.autoDetach

Lassen Sie git gc --auto sofort zurückkehren und im Hintergrund laufen, wenn das System dies unterstützt. Standard ist true. Diese Konfigurationsvariable dient als Fallback, falls maintenance.autoDetach nicht gesetzt ist.

gc.bigPackThreshold

Wenn ungleich null, werden alle Nicht-Cruft-Packs, die größer als dieser Grenzwert sind, bei Ausführung von git gc beibehalten. Dies ist sehr ähnlich zu --keep-largest-pack, außer dass alle Nicht-Cruft-Packs, die den Schwellenwert erfüllen, beibehalten werden, nicht nur das größte Pack. Standard ist null. Übliche Einheiten-Suffixe von k, m oder g werden unterstützt.

Beachten Sie, dass, wenn die Anzahl der beibehaltenen Packs größer ist als gc.autoPackLimit, diese Konfigurationsvariable ignoriert wird, alle Packs außer dem Basis-Pack neu verpackt werden. Danach sollte die Anzahl der Packs unter gc.autoPackLimit liegen und gc.bigPackThreshold wieder beachtet werden.

Wenn die für git repack geschätzte Speichermenge für einen reibungslosen Ablauf nicht verfügbar ist und gc.bigPackThreshold nicht gesetzt ist, wird auch das größte Pack ausgeschlossen (dies entspricht der Ausführung von git gc mit --keep-largest-pack).

gc.writeCommitGraph

Wenn true, dann schreibt gc den Commit-Graph neu, wenn git-gc[1] ausgeführt wird. Bei Verwendung von git gc --auto wird der Commit-Graph aktualisiert, wenn eine Wartung erforderlich ist. Standard ist true. Einzelheiten finden Sie unter git-commit-graph[1].

gc.logExpiry

Wenn die Datei gc.log existiert, gibt git gc --auto ihren Inhalt aus und wird mit dem Status null beendet, anstatt ausgeführt zu werden, es sei denn, diese Datei ist älter als gc.logExpiry. Standard ist "1.day". Weitere Möglichkeiten zur Angabe ihres Werts finden Sie unter gc.pruneExpire.

gc.packRefs

Das Ausführen von git pack-refs in einem Repository macht es für Git-Versionen vor 1.5.1.2 über langsame Transporte wie HTTP unklonbar. Diese Variable bestimmt, ob git gc git pack-refs ausführt. Dies kann auf notbare gesetzt werden, um es in allen nicht-bare Repos zu aktivieren, oder es kann auf einen booleschen Wert gesetzt werden. Der Standardwert ist true.

gc.cruftPacks

Speichert nicht erreichbare Objekte in einem Cruft-Pack (siehe git-repack[1]) anstelle von losen Objekten. Der Standardwert ist true.

gc.maxCruftSize

Begrenzt die Größe neuer Cruft-Packs beim Repacking. Wenn dies zusätzlich zu --max-cruft-size angegeben wird, hat die Kommandozeilenoption Vorrang. Siehe die Option --max-cruft-size von git-repack[1].

gc.pruneExpire

Wenn git gc ausgeführt wird, ruft es prune --expire 2.weeks.ago auf (und repack --cruft --cruft-expiration 2.weeks.ago, wenn Cruft-Packs über gc.cruftPacks oder --cruft verwendet werden). Überschreiben Sie die Kulanzzeit mit dieser Konfigurationsvariable. Der Wert "now" kann verwendet werden, um diese Kulanzzeit zu deaktivieren und nicht erreichbare Objekte sofort zu löschen, oder "never" kann verwendet werden, um das Löschen zu unterdrücken. Diese Funktion hilft, Beschädigungen zu verhindern, wenn git gc gleichzeitig mit einem anderen Prozess ausgeführt wird, der in das Repository schreibt; siehe den Abschnitt "NOTES" von git-gc[1].

gc.worktreePruneExpire

Wenn git gc ausgeführt wird, ruft es git worktree prune --expire 3.months.ago auf. Diese Konfigurationsvariable kann verwendet werden, um eine andere Kulanzzeit festzulegen. Der Wert "now" kann verwendet werden, um die Kulanzzeit zu deaktivieren und $GIT_DIR/worktrees sofort zu bereinigen, oder "never" kann verwendet werden, um die Bereinigung zu unterdrücken.

gc.reflogExpire
gc.<pattern>.reflogExpire

git reflog expire entfernt Reflog-Einträge, die älter als diese Zeit sind; Standard ist 90 Tage. Der Wert "now" löscht alle Einträge sofort und "never" unterdrückt das Löschen vollständig. Mit "<pattern>" (z. B. "refs/stash") in der Mitte gilt die Einstellung nur für die mit dem Muster übereinstimmenden Refs.

gc.reflogExpireUnreachable
gc.<pattern>.reflogExpireUnreachable

git reflog expire entfernt Reflog-Einträge, die älter als diese Zeit sind und nicht vom aktuellen Tipppunkt aus erreichbar sind; Standard ist 30 Tage. Der Wert "now" löscht alle Einträge sofort und "never" unterdrückt das Löschen vollständig. Mit "<pattern>" (z. B. "refs/stash") in der Mitte gilt die Einstellung nur für die mit dem Muster übereinstimmenden Refs.

Diese Arten von Einträgen werden im Allgemeinen als Ergebnis der Verwendung von git commit --amend oder git rebase erstellt und sind die Commits vor dem Amend oder Rebase. Da diese Änderungen nicht Teil des aktuellen Projekts sind, möchten die meisten Benutzer sie früher ablaufen lassen, weshalb die Standardeinstellung aggressiver ist als gc.reflogExpire.

gc.recentObjectsHook

Bei der Entscheidung, ob ein Objekt entfernt werden soll (entweder beim Generieren eines Cruft-Packs oder beim Speichern nicht erreichbarer Objekte als lose Objekte), wird die Shell verwendet, um die angegebenen Befehle auszuführen. Interpretiert deren Ausgabe als Objekt-IDs, die Git als "aktuell" betrachtet, unabhängig von ihrem Alter. Indem ihre mtimes als "jetzt" behandelt werden, werden alle Objekte (und ihre Nachfolger), die in der Ausgabe erwähnt werden, unabhängig von ihrem tatsächlichen Alter beibehalten.

Die Ausgabe muss genau eine Hex-Objekt-ID pro Zeile enthalten und nichts anderes. Objekte, die im Repository nicht gefunden werden können, werden ignoriert. Mehrere Hooks werden unterstützt, aber alle müssen erfolgreich beendet werden, sonst wird die Operation (entweder das Generieren eines Cruft-Packs oder das Entpacken nicht erreichbarer Objekte) angehalten.

gc.repackFilter

Beim Repacking wird der angegebene Filter verwendet, um bestimmte Objekte in eine separate Packdatei zu verschieben. Siehe die Option --filter=<filter-spec> von git-repack[1].

gc.repackFilterTo

Beim Repacking und der Verwendung eines Filters, siehe gc.repackFilter, wird der angegebene Speicherort verwendet, um die Packdatei mit den gefilterten Objekten zu erstellen. **WARNUNG:** Der angegebene Speicherort sollte zugänglich sein, z. B. über den Git-Alternates-Mechanismus, da das Repository sonst von Git als beschädigt betrachtet werden könnte, da es möglicherweise nicht auf die Objekte in dieser Packdatei zugreifen kann. Siehe die Option --filter-to=<dir> von git-repack[1] und den Abschnitt objects/info/alternates von gitrepository-layout[5].

gc.rerereResolved

Aufzeichnungen von zuvor aufgelösten Merge-Konflikten werden für diese Anzahl von Tagen aufbewahrt, wenn git rerere gc ausgeführt wird. Sie können auch menschenlesbarere Formate wie "1.month.ago" usw. verwenden. Der Standardwert sind 60 Tage. Siehe git-rerere[1].

gc.rerereUnresolved

Aufzeichnungen von nicht aufgelösten Merge-Konflikten werden für diese Anzahl von Tagen aufbewahrt, wenn git rerere gc ausgeführt wird. Sie können auch menschenlesbarere Formate wie "1.month.ago" usw. verwenden. Der Standardwert sind 15 Tage. Siehe git-rerere[1].

gitcvs.commitMsgAnnotation

Hängt diese Zeichenkette an jede Commit-Nachricht an. Auf eine leere Zeichenkette setzen, um diese Funktion zu deaktivieren. Standardmäßig "via git-CVS emulator".

gitcvs.enabled

Ob die CVS-Server-Schnittstelle für dieses Repository aktiviert ist. Siehe git-cvsserver[1].

gitcvs.logFile

Pfad zu einer Protokolldatei, in die die CVS-Server-Schnittstelle verschiedene Dinge protokolliert. Siehe git-cvsserver[1].

gitcvs.usecrlfattr

Wenn true, sucht der Server nach den Zeilenendkonvertierungsattributen für Dateien, um die -k-Modi zu bestimmen. Wenn die Attribute Git zwingen, eine Datei als Text zu behandeln, wird der -k-Modus leer gelassen, damit CVS-Clients sie als Text behandeln. Wenn sie die Textkonvertierung unterdrücken, wird die Datei mit dem Modus -kb gesetzt, was jede Zeilenende-Bearbeitung unterdrückt, die der Client sonst möglicherweise durchführt. Wenn die Attribute den Dateityp nicht bestimmen können, wird gitcvs.allBinary verwendet. Siehe gitattributes[5].

gitcvs.allBinary

Dies wird verwendet, wenn gitcvs.usecrlfattr nicht den richtigen -kb-Modus bestimmt. Wenn true, werden alle nicht aufgelösten Dateien im Modus -kb an den Client gesendet. Dies veranlasst den Client, sie als Binärdateien zu behandeln, was jede Zeilenende-Bearbeitung unterdrückt, die er sonst möglicherweise durchführt. Alternativ, wenn er auf "guess" gesetzt ist, werden die Inhalte der Datei untersucht, um zu entscheiden, ob sie binär ist, ähnlich wie bei core.autocrlf.

gitcvs.dbName

Datenbank, die von git-cvsserver zum Zwischenspeichern von Revisionsinformationen aus dem Git-Repository verwendet wird. Die genaue Bedeutung hängt vom verwendeten Datenbanktreiber ab; für SQLite (Standardtreiber) ist dies ein Dateiname. Unterstützt Variablensubstitution (siehe git-cvsserver[1] für Details). Darf keine Semikolons (;) enthalten. Standard: %Ggitcvs.%m.sqlite

gitcvs.dbDriver

Verwendeter Perl DBI-Treiber. Sie können hier jeden verfügbaren Treiber angeben, aber er funktioniert möglicherweise nicht. git-cvsserver wird mit DBD::SQLite getestet, soll mit DBD::Pg funktionieren und soll **nicht** mit DBD::mysql funktionieren. Experimentelle Funktion. Darf keine Doppelpunkte (:) enthalten. Standard: SQLite. Siehe git-cvsserver[1].

gitcvs.dbUser
gitcvs.dbPass

Datenbankbenutzer und -passwort. Nur nützlich, wenn gitcvs.dbDriver gesetzt ist, da SQLite keine Datenbankbenutzer und/oder -passwörter kennt. gitcvs.dbUser unterstützt Variablensubstitution (siehe git-cvsserver[1] für Details).

gitcvs.dbTableNamePrefix

Präfix für den Namen der Datenbanktabellen. Wird den Namen aller verwendeten Datenbanktabellen vorangestellt, wodurch eine einzelne Datenbank für mehrere Repositories verwendet werden kann. Unterstützt Variablensubstitution (siehe git-cvsserver[1] für Details). Alle nicht-alphabetischen Zeichen werden durch Unterstriche ersetzt.

Alle gitcvs-Variablen außer gitcvs.usecrlfattr und gitcvs.allBinary können auch als gitcvs.<access_method>.<varname> angegeben werden (wobei access_method entweder "ext" oder "pserver" ist), damit sie nur für die angegebene Zugriffsmethode gelten.

gitweb.category
gitweb.description
gitweb.owner
gitweb.url

Siehe gitweb[1] für die Beschreibung.

gitweb.avatar
gitweb.blame
gitweb.grep
gitweb.highlight
gitweb.patches
gitweb.pickaxe
gitweb.remote_heads
gitweb.showSizes
gitweb.snapshot

Siehe gitweb.conf[5] für die Beschreibung.

gpg.program

Pfad zum Programm, das anstelle von "gpg" beim Erstellen oder Überprüfen einer PGP-Signatur verwendet wird. Das Programm muss die gleiche Befehlszeilenschnittstelle wie GPG unterstützen, d. h., um eine abgetrennte Signatur zu überprüfen, wird "gpg --verify $signature - <$file" ausgeführt, und das Programm muss eine gültige Signatur signalisieren, indem es mit dem Exit-Code 0 beendet wird. Um eine abgetrennte ASCII-signierte Signatur zu generieren, wird die Standardeingabe von "gpg -bsau $key" mit dem zu signierenden Inhalt gefüttert, und das Programm muss das Ergebnis an seine Standardausgabe senden.

gpg.format

Gibt das Schlüsselformat an, das beim Signieren mit --gpg-sign verwendet wird. Standard ist "openpgp". Andere mögliche Werte sind "x509", "ssh".

Siehe gitformat-signature[5] für das Signaturformat, das sich je nach ausgewähltem gpg.format unterscheidet.

gpg.<format>.program

Verwenden Sie dies, um das Programm für das von Ihnen gewählte Signaturformat anzupassen (siehe gpg.program und gpg.format). gpg.program kann weiterhin als Legacy-Synonym für gpg.openpgp.program verwendet werden. Der Standardwert für gpg.x509.program ist "gpgsm" und für gpg.ssh.program ist es "ssh-keygen".

gpg.minTrustLevel

Gibt eine minimale Vertrauensstufe für die Signaturprüfung an. Wenn diese Option nicht gesetzt ist, erfordert die Signaturprüfung für Merge-Vorgänge einen Schlüssel mit mindestens "marginal" Vertrauen. Andere Operationen, die eine Signaturprüfung durchführen, erfordern einen Schlüssel mit mindestens "undefined" Vertrauen. Das Setzen dieser Option überschreibt die erforderliche Vertrauensstufe für alle Operationen. Unterstützte Werte, in zunehmender Reihenfolge der Bedeutung:

  • undefined

  • never

  • marginal

  • fully

  • ultimate

gpg.ssh.defaultKeyCommand

Dieser Befehl wird ausgeführt, wenn user.signingkey nicht gesetzt ist und eine SSH-Signatur angefordert wird. Bei erfolgreichem Beenden wird ein gültiger SSH-öffentlicher Schlüssel, der mit key:: beginnt, in der ersten Zeile seiner Ausgabe erwartet. Dies ermöglicht einem Skript die dynamische Suche nach dem richtigen öffentlichen Schlüssel, wenn eine statische Konfiguration von user.signingKey unpraktisch ist. Zum Beispiel, wenn Schlüssel oder SSH-Zertifikate häufig rotiert werden oder die Auswahl des richtigen Schlüssels von externen Faktoren abhängt, die Git nicht bekannt sind.

gpg.ssh.allowedSignersFile

Eine Datei, die SSH-öffentliche Schlüssel enthält, denen Sie vertrauen möchten. Die Datei besteht aus einer oder mehreren Zeilen mit Prinzipalen gefolgt von einem SSH-öffentlichen Schlüssel. z. B.: user1@example.com,user2@example.com ssh-rsa AAAAX1... Details finden Sie unter ssh-keygen(1) "ALLOWED SIGNERS". Der Prinzipal wird nur zur Identifizierung des Schlüssels verwendet und ist bei der Überprüfung einer Signatur verfügbar.

SSH hat kein Konzept von Vertrauensstufen wie GPG. Um zwischen gültigen und vertrauenswürdigen Signaturen unterscheiden zu können, wird die Vertrauensstufe einer Signaturprüfung auf fully gesetzt, wenn der öffentliche Schlüssel in der allowedSignersFile vorhanden ist. Andernfalls ist die Vertrauensstufe undefined und git verify-commit/tag schlägt fehl.

Diese Datei kann auf einen Speicherort außerhalb des Repositories gesetzt werden, und jeder Entwickler pflegt seinen eigenen Vertrauensspeicher. Ein zentraler Repository-Server könnte diese Datei automatisch aus SSH-Schlüsseln mit Push-Zugriff generieren, um den Code dagegen zu überprüfen. In einer Unternehmensumgebung wird diese Datei wahrscheinlich an einem globalen Ort aus einer Automatisierung generiert, die bereits Entwickler-SSH-Schlüssel verwaltet.

Ein Repository, das nur signierte Commits zulässt, kann die Datei im Repository selbst speichern, indem es einen Pfad relativ zur obersten Ebene des Arbeitsverzeichnisses verwendet. Auf diese Weise können nur Committer mit einem bereits gültigen Schlüssel Schlüssel im Keyring hinzufügen oder ändern.

Seit OpensSSH 8.8 erlaubt diese Datei die Angabe einer Schlüssellebensdauer mit den Optionen valid-after und valid-before. Git markiert Signaturen als gültig, wenn der Signaturschlüssel zum Zeitpunkt der Erstellung der Signatur gültig war. Dies ermöglicht es Benutzern, einen Signaturschlüssel zu ändern, ohne alle zuvor erstellten Signaturen ungültig zu machen.

Die Verwendung eines SSH-CA-Schlüssels mit der Option cert-authority (siehe ssh-keygen(1) "CERTIFICATES") ist ebenfalls gültig.

gpg.ssh.revocationFile

Entweder eine SSH-KRL oder eine Liste von widerrufenen öffentlichen Schlüsseln (ohne das Prinzipal-Präfix). Siehe ssh-keygen(1) für Details. Wenn ein öffentlicher Schlüssel in dieser Datei gefunden wird, wird er immer mit der Vertrauensstufe "never" behandelt und Signaturen werden als ungültig angezeigt.

grep.lineNumber

Wenn auf true gesetzt, wird die Option -n standardmäßig aktiviert.

grep.column

Wenn auf true gesetzt, wird die Option --column standardmäßig aktiviert.

grep.patternType

Legt das Standard-Matching-Verhalten fest. Die Verwendung eines Wertes von basic, extended, fixed oder perl aktiviert entsprechend die Option --basic-regexp, --extended-regexp, --fixed-strings oder --perl-regexp, während der Wert default die Option grep.extendedRegexp verwendet, um zwischen basic und extended zu wählen.

grep.extendedRegexp

Wenn auf true gesetzt, wird die Option --extended-regexp standardmäßig aktiviert. Diese Option wird ignoriert, wenn die Option grep.patternType auf einen anderen Wert als default gesetzt ist.

grep.threads

Anzahl der zu verwendenden Grep-Worker-Threads. Wenn nicht gesetzt (oder auf 0 gesetzt), verwendet Git so viele Threads wie die Anzahl der verfügbaren logischen Kerne.

grep.fullName

Wenn auf true gesetzt, wird die Option --full-name standardmäßig aktiviert.

grep.fallbackToNoIndex

Wenn auf true gesetzt, wird auf git grep --no-index zurückgegriffen, wenn git grep außerhalb eines Git-Repositorys ausgeführt wird. Standard ist false.

gui.commitMsgWidth

Definiert die Breite des Commit-Nachrichtenfensters in git-gui[1]. "75" ist der Standard.

gui.diffContext

Gibt an, wie viele Kontextzeilen bei Diff-Aufrufen von git-gui[1] verwendet werden sollen. Der Standardwert ist "5".

gui.displayUntracked

Bestimmt, ob git-gui[1] nicht verfolgte Dateien in der Dateiliste anzeigt. Der Standardwert ist "true".

gui.encoding

Gibt die Standardzeichenkodierung an, die zur Anzeige von Dateiinhalten in git-gui[1] und gitk[1] verwendet werden soll. Sie kann durch Setzen des encoding-Attributs für relevante Dateien (siehe gitattributes[5]) überschrieben werden. Wenn diese Option nicht gesetzt ist, verwenden die Werkzeuge standardmäßig die Locale-Kodierung.

gui.matchTrackingBranch

Bestimmt, ob neu erstellte Branches mit git-gui[1] standardmäßig Remote-Branches mit übereinstimmenden Namen verfolgen oder nicht. Standard: "false".

gui.newBranchTemplate

Wird als vorgeschlagener Name beim Erstellen neuer Branches mit git-gui[1] verwendet.

gui.pruneDuringFetch

"true", wenn git-gui[1] Remote-Tracking-Branches beim Abrufen bereinigen soll. Der Standardwert ist "false".

gui.trustmtime

Bestimmt, ob git-gui[1] den Änderungszeitstempel der Datei vertrauen soll oder nicht. Standardmäßig wird den Zeitstempeln nicht vertraut.

gui.spellingDictionary

Gibt das Wörterbuch an, das für die Rechtschreibprüfung von Commit-Nachrichten in git-gui[1] verwendet wird. Wenn es auf "none" gesetzt ist, ist die Rechtschreibprüfung deaktiviert.

gui.fastCopyBlame

Wenn true, verwendet git gui blame -C anstelle von -C -C für die Erkennung des ursprünglichen Speicherorts. Dies macht Blame bei riesigen Repositories erheblich schneller, auf Kosten einer weniger gründlichen Kopiererkennung.

gui.copyBlameThreshold

Gibt den Schwellenwert für die Erkennung des ursprünglichen Speicherorts in git gui blame an, gemessen in alphanumerischen Zeichen. Weitere Informationen zur Kopiererkennung finden Sie im Handbuch zu git-blame[1].

gui.blamehistoryctx

Gibt den Radius des Historienkontextes in Tagen an, der in gitk[1] für den ausgewählten Commit angezeigt wird, wenn der Menüpunkt Show History Context aus git gui blame aufgerufen wird. Wenn diese Variable auf Null gesetzt ist, wird die gesamte Historie angezeigt.

guitool.<name>.cmd

Gibt die Shell-Befehlszeile an, die ausgeführt wird, wenn das entsprechende Element des git-gui[1] Tools-Menüs aufgerufen wird. Diese Option ist für jedes Tool obligatorisch. Der Befehl wird vom Stammverzeichnis des Arbeitsverzeichnisses aus ausgeführt, und in der Umgebung werden ihm der Name des Tools als GIT_GUITOOL, der Name der aktuell ausgewählten Datei als FILENAME und der Name des aktuellen Branches als CUR_BRANCH (wenn der Head gelöst ist, ist CUR_BRANCH leer) übergeben.

guitool.<name>.needsFile

Führt das Tool nur aus, wenn ein Diff in der GUI ausgewählt ist. Es garantiert, dass FILENAME nicht leer ist.

guitool.<name>.noConsole

Führt den Befehl stillschweigend aus, ohne ein Fenster zu erstellen, um seine Ausgabe anzuzeigen.

guitool.<name>.noRescan

Scannt das Arbeitsverzeichnis nach Änderungen nicht erneut, nachdem das Tool ausgeführt wurde.

guitool.<name>.confirm

Zeigt einen Bestätigungsdialog an, bevor das Tool tatsächlich ausgeführt wird.

guitool.<name>.argPrompt

Fordert einen String-Argument vom Benutzer an und übergibt ihn über die Umgebungsvariable ARGS an das Tool. Da die Anforderung eines Arguments eine Bestätigung impliziert, hat die Option confirm keine Wirkung, wenn diese aktiviert ist. Wenn die Option auf true, yes oder 1 gesetzt ist, verwendet der Dialog eine integrierte generische Aufforderung; andernfalls wird der exakte Wert der Variablen verwendet.

guitool.<name>.revPrompt

Fordert eine einzelne gültige Revision vom Benutzer an und setzt die Umgebungsvariable REVISION. In anderen Aspekten ist diese Option ähnlich wie argPrompt und kann zusammen mit ihr verwendet werden.

guitool.<name>.revUnmerged

Zeigt nur nicht zusammengeführte Branches im revPrompt-Unterdialog an. Dies ist nützlich für Tools, die ähnlich wie merge oder rebase funktionieren, aber nicht für Dinge wie checkout oder reset.

guitool.<name>.title

Gibt den Titel an, der für den Aufforderungsdialog verwendet werden soll. Standard ist der Toolname.

guitool.<name>.prompt

Gibt die allgemeine Aufforderungszeichenkette an, die oben im Dialog angezeigt wird, vor den Unterabschnitten für argPrompt und revPrompt. Der Standardwert enthält den eigentlichen Befehl.

help.browser

Gibt den Browser an, der zur Anzeige von Hilfe im web-Format verwendet wird. Siehe git-help[1].

help.format

Überschreibt das Standard-Hilfeformat, das von git-help[1] verwendet wird. Die Werte man, info, web und html werden unterstützt. man ist der Standard. web und html sind identisch.

help.autoCorrect

Wenn Git Tippfehler erkennt und genau einen gültigen Befehl identifizieren kann, der dem Fehler ähnelt, versucht Git, den korrekten Befehl vorzuschlagen oder die vorgeschlagene Korrektur sogar automatisch auszuführen. Mögliche Konfigurationswerte sind:

  • 0, "false", "off", "no", "show": zeigt den vorgeschlagenen Befehl an (Standard).

  • 1, "true", "on", "yes", "immediate": führt den vorgeschlagenen Befehl sofort aus.

  • positive Zahl > 1: führt den vorgeschlagenen Befehl nach der angegebenen Anzahl von Dezisekunden (0,1 Sek.) aus.

  • "never": führt keinen vorgeschlagenen Befehl aus und zeigt ihn nicht an.

  • "prompt": zeigt die vorgeschlagene Korrektur an und fragt nach Bestätigung, um den Befehl auszuführen.

help.htmlPath

Gibt den Pfad an, an dem die HTML-Dokumentation gespeichert ist. Dateisystempfade und URLs werden unterstützt. HTML-Seiten werden mit diesem Pfad präfixiert, wenn Hilfe im web-Format angezeigt wird. Dies ist standardmäßig der Dokumentationspfad Ihrer Git-Installation.

http.proxy

Überschreibt den HTTP-Proxy, der normalerweise über die Umgebungsvariablen http_proxy, https_proxy und all_proxy konfiguriert wird (siehe curl(1)). Zusätzlich zur von curl verstandenen Syntax ist es möglich, eine Proxy-Zeichenkette mit einem Benutzernamen, aber ohne Passwort anzugeben, in welchem Fall Git versuchen wird, einen auf die gleiche Weise wie für andere Anmeldeinformationen zu beschaffen. Siehe gitcredentials[7] für weitere Informationen. Die Syntax lautet daher [protocol://][user[:password]@]proxyhost[:port][/path]. Dies kann pro Remote-Verbindung überschrieben werden; siehe remote.<name>.proxy.

Jeder Proxy, egal wie konfiguriert, muss vollständig transparent sein und darf die Anfrage oder Antwort in keiner Weise modifizieren, transformieren oder puffern. Proxies, die nicht vollständig transparent sind, verursachen bekanntermaßen verschiedene Arten von Problemen mit Git.

http.proxyAuthMethod

Legt die Methode fest, mit der gegen den HTTP-Proxy authentifiziert wird. Dies wird nur wirksam, wenn die konfigurierte Proxy-Zeichenkette einen Benutzernamen enthält (d. h. die Form user@host oder user@host:port hat). Dies kann pro Remote-Verbindung überschrieben werden; siehe remote.<name>.proxyAuthMethod. Beides kann durch die Umgebungsvariable GIT_HTTP_PROXY_AUTHMETHOD überschrieben werden. Mögliche Werte sind:

  • anyauth - Automatische Auswahl einer geeigneten Authentifizierungsmethode. Es wird davon ausgegangen, dass der Proxy auf eine nicht authentifizierte Anfrage mit einem 407-Statuscode und einem oder mehreren Proxy-Authenticate-Headern mit unterstützten Authentifizierungsmethoden antwortet. Dies ist der Standard.

  • basic - HTTP Basic-Authentifizierung

  • digest - HTTP Digest-Authentifizierung; dies verhindert, dass das Passwort im Klartext an den Proxy übertragen wird

  • negotiate - GSS-Negotiate-Authentifizierung (vergleiche die Option --negotiate von curl(1))

  • ntlm - NTLM-Authentifizierung (vergleiche die Option --ntlm von curl(1))

http.proxySSLCert

Der Pfad zu einer Datei, die ein Client-Zertifikat zur Authentifizierung bei einem HTTPS-Proxy speichert. Kann durch die Umgebungsvariable GIT_PROXY_SSL_CERT überschrieben werden.

http.proxySSLKey

Der Pfad zu einer Datei, die einen privaten Schlüssel zur Authentifizierung bei einem HTTPS-Proxy speichert. Kann durch die Umgebungsvariable GIT_PROXY_SSL_KEY überschrieben werden.

http.proxySSLCertPasswordProtected

Aktiviert die Passwortabfrage von Git für das Proxy-SSL-Zertifikat. Andernfalls wird OpenSSL den Benutzer möglicherweise mehrmals auffordern, wenn das Zertifikat oder der private Schlüssel verschlüsselt ist. Kann durch die Umgebungsvariable GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED überschrieben werden.

http.proxySSLCAInfo

Pfad zu der Datei, die das Zertifikatspaket enthält, das zur Verifizierung des Proxys bei Verwendung eines HTTPS-Proxys verwendet werden soll. Kann durch die Umgebungsvariable GIT_PROXY_SSL_CAINFO überschrieben werden.

http.emptyAuth

Versucht die Authentifizierung, ohne nach einem Benutzernamen oder Passwort zu fragen. Dies kann verwendet werden, um GSS-Negotiate-Authentifizierung zu versuchen, ohne einen Benutzernamen in der URL anzugeben, da libcurl normalerweise einen Benutzernamen für die Authentifizierung benötigt.

http.proactiveAuth

Versucht die Authentifizierung, ohne zuerst einen nicht authentifizierten Versuch zu unternehmen und eine 401-Antwort zu erhalten. Dies kann verwendet werden, um sicherzustellen, dass alle Anfragen authentifiziert werden. Wenn http.emptyAuth auf true gesetzt ist, hat dieser Wert keine Auswirkung.

Wenn der verwendete Credential Helper ein Authentifizierungsschema angibt (z. B. über das Feld authtype), wird dieser Wert verwendet; wenn ein Benutzername und ein Passwort ohne Schema bereitgestellt werden, wird die Basic-Authentifizierung verwendet. Der Wert der Option bestimmt das vom Helper angeforderte Schema. Mögliche Werte sind:

  • basic - Fordert Basic-Authentifizierung vom Helper an.

  • auto - Erlaubt dem Helper, ein geeignetes Schema auszuwählen.

  • none - Deaktiviert die proaktive Authentifizierung.

Beachten Sie, dass TLS immer mit dieser Konfiguration verwendet werden sollte, da es andernfalls leicht zu unbeabsichtigter Offenlegung von Klartext-Anmeldeinformationen kommen kann, wenn Basic-Authentifizierung ausgewählt ist.

http.delegation

Steuert die GSSAPI-Anmeldeinformationsdelegation. Die Delegation ist in libcurl seit Version 7.21.7 standardmäßig deaktiviert. Setzen Sie den Parameter, um dem Server mitzuteilen, was er bei der Weitergabe von Benutzeranmeldeinformationen delegieren darf. Wird mit GSS/Kerberos verwendet. Mögliche Werte sind:

  • none - Keine Delegation zulassen.

  • policy - Delegiert nur, wenn das Flag OK-AS-DELEGATE im Kerberos-Dienstticket gesetzt ist, was eine Frage der Realm-Richtlinie ist.

  • always - Erlaubt dem Server bedingungslos, zu delegieren.

http.extraHeader

Übergibt einen zusätzlichen HTTP-Header bei der Kommunikation mit einem Server. Wenn mehr als ein solcher Eintrag vorhanden ist, werden alle als zusätzliche Header hinzugefügt. Um die Überschreibung von aus der Systemkonfiguration übernommenen Einstellungen zu ermöglichen, setzt ein leerer Wert die zusätzlichen Header auf eine leere Liste.

http.cookieFile

Der Pfad zu einer Datei, die zuvor gespeicherte Cookie-Zeilen enthält, die in der Git-HTTP-Sitzung verwendet werden sollen, wenn sie mit dem Server übereinstimmen. Das Dateiformat der zu lesenden Cookies sollte ein einfaches HTTP-Header-Format oder das Netscape/Mozilla-Cookie-Dateiformat sein (siehe curl(1)). Setzen Sie es auf eine leere Zeichenkette, um nur neue Cookies vom Server zu akzeptieren und sie in nachfolgenden Anfragen innerhalb derselben Verbindung zurückzusenden. BEACHTEN SIE, dass die mit http.cookieFile angegebene Datei nur als Eingabe verwendet wird, es sei denn, http.saveCookies ist gesetzt.

http.saveCookies

Wenn gesetzt, werden während der Anfragen empfangene Cookies in der von http.cookieFile angegebenen Datei gespeichert. Hat keine Auswirkung, wenn http.cookieFile nicht gesetzt oder auf eine leere Zeichenkette gesetzt ist.

http.version

Verwenden Sie die angegebene HTTP-Protokollversion, wenn Sie mit einem Server kommunizieren. Wenn Sie die Standardeinstellung erzwingen möchten. Die verfügbare und Standardversion hängt von libcurl ab. Derzeit sind die möglichen Werte für diese Option

  • HTTP/2

  • HTTP/1.1

http.curloptResolve

Hostname-Auflösungsinformationen, die von libcurl zuerst beim Senden von HTTP-Anfragen verwendet werden. Diese Informationen sollten in einem der folgenden Formate vorliegen

  • [+]HOST:PORT:ADDRESS[,ADDRESS]

  • -HOST:PORT

Das erste Format leitet alle Anfragen an den angegebenen HOST:PORT an die bereitgestellten ADDRESS(en) um. Das zweite Format löscht alle vorherigen Konfigurationswerte für diese HOST:PORT-Kombination. Um eine einfache Überschreibung aller von der Systemkonfiguration übernommenen Einstellungen zu ermöglichen, wird ein leerer Wert alle Auflösungsinformationen auf eine leere Liste zurücksetzen.

http.sslVersion

Die SSL-Version, die bei der Aushandlung einer SSL-Verbindung verwendet werden soll, wenn Sie die Standardeinstellung erzwingen möchten. Die verfügbare und Standardversion hängt davon ab, ob libcurl gegen NSS oder OpenSSL kompiliert wurde und von der spezifischen Konfiguration der verwendeten Krypto-Bibliothek. Intern wird die Option CURLOPT_SSL_VERSION gesetzt. Weitere Details zum Format dieser Option und zu den unterstützten SSL-Versionen finden Sie in der libcurl-Dokumentation. Derzeit sind die möglichen Werte für diese Option

  • sslv2

  • sslv3

  • tlsv1

  • tlsv1.0

  • tlsv1.1

  • tlsv1.2

  • tlsv1.3

Kann durch die Umgebungsvariable GIT_SSL_VERSION überschrieben werden. Um Git zu zwingen, die Standard-SSL-Version von libcurl zu verwenden und jede explizite http.sslversion-Option zu ignorieren, setzen Sie GIT_SSL_VERSION auf einen leeren String.

http.sslCipherList

Eine Liste von SSL-Chiffren, die bei der Aushandlung einer SSL-Verbindung verwendet werden sollen. Die verfügbaren Chiffren hängen davon ab, ob libcurl gegen NSS oder OpenSSL kompiliert wurde und von der spezifischen Konfiguration der verwendeten Krypto-Bibliothek. Intern wird die Option CURLOPT_SSL_CIPHER_LIST gesetzt. Weitere Details zum Format dieser Liste finden Sie in der libcurl-Dokumentation.

Kann durch die Umgebungsvariable GIT_SSL_CIPHER_LIST überschrieben werden. Um Git zu zwingen, die Standard-Chiffrenliste von libcurl zu verwenden und jede explizite http.sslCipherList-Option zu ignorieren, setzen Sie GIT_SSL_CIPHER_LIST auf einen leeren String.

http.sslVerify

Ob das SSL-Zertifikat beim Abrufen oder Pushen über HTTPS verifiziert werden soll. Standardmäßig ist dies auf true gesetzt. Kann durch die Umgebungsvariable GIT_SSL_NO_VERIFY überschrieben werden.

http.sslCert

Datei mit dem SSL-Zertifikat beim Abrufen oder Pushen über HTTPS. Kann durch die Umgebungsvariable GIT_SSL_CERT überschrieben werden.

http.sslKey

Datei mit dem privaten SSL-Schlüssel beim Abrufen oder Pushen über HTTPS. Kann durch die Umgebungsvariable GIT_SSL_KEY überschrieben werden.

http.sslCertPasswordProtected

Aktiviert die Passwortabfrage von Git für das SSL-Zertifikat. Andernfalls fordert OpenSSL den Benutzer auf, möglicherweise mehrmals, wenn das Zertifikat oder der private Schlüssel verschlüsselt ist. Kann durch die Umgebungsvariable GIT_SSL_CERT_PASSWORD_PROTECTED überschrieben werden.

http.sslCAInfo

Datei mit den Zertifikaten zur Überprüfung des Peers beim Abrufen oder Pushen über HTTPS. Kann durch die Umgebungsvariable GIT_SSL_CAINFO überschrieben werden.

http.sslCAPath

Pfad mit Dateien mit den CA-Zertifikaten zur Überprüfung des Peers beim Abrufen oder Pushen über HTTPS. Kann durch die Umgebungsvariable GIT_SSL_CAPATH überschrieben werden.

http.sslBackend

Name des zu verwendenden SSL-Backends (z. B. "openssl" oder "schannel"). Diese Option wird ignoriert, wenn cURL keine Unterstützung für die Auswahl des SSL-Backends zur Laufzeit hat.

http.sslCertType

Typ des Client-Zertifikats, das beim Abrufen oder Pushen über HTTPS verwendet wird. "PEM", "DER" werden bei Verwendung von OpenSSL- oder GnuTLS-Backends unterstützt. "P12" wird für "openssl", "schannel", "securetransport" und GnuTLS 8.11+ unterstützt. Siehe auch libcurl CURLOPT_SSLCERTTYPE. Kann durch die Umgebungsvariable GIT_SSL_CERT_TYPE überschrieben werden.

http.sslKeyType

Typ des privaten Client-Schlüssels, der beim Abrufen oder Pushen über HTTPS verwendet wird. (z. B. "PEM", "DER" oder "ENG"). Nur anwendbar, wenn das "openssl"-Backend verwendet wird. "DER" wird mit OpenSSL nicht unterstützt. Besonders nützlich, wenn auf "ENG" gesetzt für die Authentifizierung mit PKCS#11-Tokens, mit einer PKCS#11-URL in der sslCert-Option. Siehe auch libcurl CURLOPT_SSLKEYTYPE. Kann durch die Umgebungsvariable GIT_SSL_KEY_TYPE überschrieben werden.

http.schannelCheckRevoke

Wird verwendet, um Zertifikatswiderrufsprüfungen in cURL zu erzwingen oder zu deaktivieren, wenn http.sslBackend auf "schannel" gesetzt ist. Standardmäßig true, wenn nicht gesetzt. Nur notwendig, dies zu deaktivieren, wenn Git durchweg Fehler ausgibt und die Meldung über die Überprüfung des Widerrufsstatus eines Zertifikats lautet. Diese Option wird ignoriert, wenn cURL keine Unterstützung für die Laufzeitkonfiguration der entsprechenden SSL-Option hat.

http.schannelUseSSLCAInfo

Ab cURL v7.60.0 kann das Secure Channel-Backend das über http.sslCAInfo bereitgestellte Zertifikatspaket verwenden, aber das würde den Windows-Zertifikatsspeicher überschreiben. Da dies standardmäßig nicht wünschenswert ist, teilt Git cURL mit, dieses Paket nicht standardmäßig zu verwenden, wenn das schannel-Backend über http.sslBackend konfiguriert wurde, es sei denn, http.schannelUseSSLCAInfo überschreibt dieses Verhalten.

http.pinnedPubkey

Öffentlicher Schlüssel des HTTPS-Dienstes. Dies kann entweder der Dateiname eines PEM- oder DER-kodierten öffentlichen Schlüssels sein oder ein String, der mit sha256// beginnt, gefolgt vom Base64-kodierten SHA256-Hash des öffentlichen Schlüssels. Siehe auch libcurl CURLOPT_PINNEDPUBLICKEY. Git wird mit einem Fehler beendet, wenn diese Option gesetzt ist, aber von cURL nicht unterstützt wird.

http.sslTry

Versucht, AUTH SSL/TLS und verschlüsselte Datentransfers zu verwenden, wenn über das normale FTP-Protokoll verbunden wird. Dies kann erforderlich sein, wenn der FTP-Server dies aus Sicherheitsgründen verlangt oder wenn Sie eine sichere Verbindung herstellen möchten, wann immer der entfernte FTP-Server dies unterstützt. Standardmäßig ist dies falsch, da es bei falsch konfigurierten Servern zu Zertifikatverifizierungsfehlern führen kann.

http.maxRequests

Wie viele HTTP-Anfragen parallel gestartet werden sollen. Kann durch die Umgebungsvariable GIT_HTTP_MAX_REQUESTS überschrieben werden. Standard ist 5.

http.minSessions

Die Anzahl der Curl-Sitzungen (über Slots gezählt), die über Anfragen hinweg beibehalten werden sollen. Sie werden nicht mit curl_easy_cleanup() beendet, bis http_cleanup() aufgerufen wird. Wenn USE_CURL_MULTI nicht definiert ist, wird dieser Wert auf 1 begrenzt. Standard ist 1.

http.postBuffer

Maximale Größe in Bytes des Puffers, der von Smart-HTTP-Transports verwendet wird, wenn Daten per POST an das entfernte System gesendet werden. Für Anfragen, die größer als diese Puffergröße sind, werden HTTP/1.1 und Transfer-Encoding: chunked verwendet, um die Erstellung einer massiven Pack-Datei lokal zu vermeiden. Standard ist 1 MiB, was für die meisten Anfragen ausreichend ist.

Beachten Sie, dass die Erhöhung dieses Limits nur wirksam ist, um die Chunked-Transfer-Codierung zu deaktivieren, und daher nur dort verwendet werden sollte, wo der entfernte Server oder ein Proxy nur HTTP/1.0 unterstützt oder nicht konform mit dem HTTP-Standard ist. Die Erhöhung ist im Allgemeinen keine effektive Lösung für die meisten Push-Probleme, kann jedoch die Speichernutzung erheblich erhöhen, da der gesamte Puffer auch für kleine Pushes zugewiesen wird.

http.lowSpeedLimit
http.lowSpeedTime

Wenn die HTTP-Übertragungsgeschwindigkeit in Bytes pro Sekunde länger als http.lowSpeedTime Sekunden niedriger als http.lowSpeedLimit ist, wird die Übertragung abgebrochen. Kann durch die Umgebungsvariablen GIT_HTTP_LOW_SPEED_LIMIT und GIT_HTTP_LOW_SPEED_TIME überschrieben werden.

http.keepAliveIdle

Gibt an, wie lange in Sekunden auf eine ruhende Verbindung gewartet werden soll, bevor TCP Keepalive-Sonden gesendet werden (falls vom Betriebssystem unterstützt). Wenn nicht gesetzt, wird der Standardwert von curl verwendet. Kann durch die Umgebungsvariable GIT_HTTP_KEEPALIVE_IDLE überschrieben werden.

http.keepAliveInterval

Gibt an, wie lange in Sekunden zwischen TCP Keepalive-Sonden gewartet werden soll (falls vom Betriebssystem unterstützt). Wenn nicht gesetzt, wird der Standardwert von curl verwendet. Kann durch die Umgebungsvariable GIT_HTTP_KEEPALIVE_INTERVAL überschrieben werden.

http.keepAliveCount

Gibt an, wie viele TCP Keepalive-Sonden gesendet werden sollen, bevor aufgegeben und die Verbindung beendet wird (falls vom Betriebssystem unterstützt). Wenn nicht gesetzt, wird der Standardwert von curl verwendet. Kann durch die Umgebungsvariable GIT_HTTP_KEEPALIVE_COUNT überschrieben werden.

http.noEPSV

Ein boolescher Wert, der die Verwendung des EPSV-FTP-Befehls durch curl deaktiviert. Dies kann bei einigen "schlechten" FTP-Servern hilfreich sein, die den EPSV-Modus nicht unterstützen. Kann durch die Umgebungsvariable GIT_CURL_FTP_NO_EPSV überschrieben werden. Standard ist false (curl wird EPSV verwenden).

http.userAgent

Der HTTP USER_AGENT-String, der einem HTTP-Server präsentiert wird. Der Standardwert repräsentiert die Version des Git-Clients, z. B. git/1.7.1. Diese Option ermöglicht es Ihnen, diesen Wert durch einen gebräuchlicheren Wert wie Mozilla/4.0 zu überschreiben. Dies kann beispielsweise notwendig sein, wenn Sie über eine Firewall verbunden sind, die HTTP-Verbindungen auf eine Reihe gängiger USER_AGENT-Strings beschränkt (aber keine wie git/1.7.1 einschließt). Kann durch die Umgebungsvariable GIT_HTTP_USER_AGENT überschrieben werden.

http.followRedirects

Ob Git HTTP-Weiterleitungen folgen soll. Wenn auf true gesetzt, folgt Git transparent jeder Weiterleitung, die von einem angetroffenen Server ausgegeben wird. Wenn auf false gesetzt, behandelt Git alle Weiterleitungen als Fehler. Wenn auf initial gesetzt, folgt Git Weiterleitungen nur für die anfängliche Anfrage an einen Remote, aber nicht für nachfolgende HTTP-Anfragen. Da Git die weitergeleitete URL als Basis für die Folgeanfragen verwendet, ist dies im Allgemeinen ausreichend. Der Standard ist initial.

http.<url>.*

Beliebige der obigen http.*-Optionen können selektiv auf bestimmte URLs angewendet werden. Damit ein Konfigurationsschlüssel mit einer URL übereinstimmt, wird jedes Element des Konfigurationsschlüssels mit dem der URL verglichen, in der folgenden Reihenfolge

  1. Schema (z. B. https in https://example.com/). Dieses Feld muss exakt zwischen dem Konfigurationsschlüssel und der URL übereinstimmen.

  2. Host-/Domainname (z. B. example.com in https://example.com/). Dieses Feld muss zwischen dem Konfigurationsschlüssel und der URL übereinstimmen. Es ist möglich, ein * als Teil des Hostnamens anzugeben, um alle Subdomains auf dieser Ebene abzugleichen. https://*.example.com/ würde zum Beispiel https://foo.example.com/ abgleichen, aber nicht https://foo.bar.example.com/.

  3. Portnummer (z. B. 8080 in http://example.com:8080/). Dieses Feld muss exakt zwischen dem Konfigurationsschlüssel und der URL übereinstimmen. Fehlende Portnummern werden automatisch in die korrekte Standardeinstellung für das Schema umgewandelt, bevor der Abgleich erfolgt.

  4. Pfad (z. B. repo.git in https://example.com/repo.git). Das Pfadfeld des Konfigurationsschlüssels muss dem Pfadfeld der URL entweder exakt oder als Präfix von schrägstrichgetrennten Pfadelementen entsprechen. Das bedeutet, dass ein Konfigurationsschlüssel mit dem Pfad foo/ mit dem URL-Pfad foo/bar übereinstimmt. Ein Präfix kann nur an einer Schrägstrichgrenze (/) übereinstimmen. Längere Übereinstimmungen haben Vorrang (daher ist ein Konfigurationsschlüssel mit dem Pfad foo/bar eine bessere Übereinstimmung mit dem URL-Pfad foo/bar als ein Konfigurationsschlüssel nur mit dem Pfad foo/).

  5. Benutzername (z. B. user in https://user@example.com/repo.git). Wenn der Konfigurationsschlüssel einen Benutzernamen hat, muss dieser mit dem Benutzernamen in der URL exakt übereinstimmen. Wenn der Konfigurationsschlüssel keinen Benutzernamen hat, stimmt dieser Konfigurationsschlüssel mit einer URL mit beliebigem Benutzernamen (auch keinem) überein, jedoch mit geringerer Priorität als ein Konfigurationsschlüssel mit einem Benutzernamen.

Die obige Liste ist nach absteigender Priorität geordnet; eine URL, die mit dem Pfad eines Konfigurationsschlüssels übereinstimmt, wird gegenüber einer bevorzugt, die mit seinem Benutzernamen übereinstimmt. Zum Beispiel, wenn die URL https://user@example.com/foo/bar lautet, wird eine Übereinstimmung mit dem Konfigurationsschlüssel https://example.com/foo gegenüber einer Übereinstimmung mit dem Konfigurationsschlüssel https://user@example.com bevorzugt.

Alle URLs werden vor dem Abgleich normalisiert (der Passwortteil, falls in der URL eingebettet, wird für den Abgleich immer ignoriert), sodass äquivalente URLs, die einfach anders geschrieben sind, korrekt übereinstimmen. Umgebungsvariablen haben immer Vorrang vor allen Übereinstimmungen. Die URLs, mit denen abgeglichen wird, sind diejenigen, die direkt an Git-Befehle übergeben werden. Das bedeutet, dass URLs, die als Ergebnis einer Weiterleitung besucht werden, nicht am Abgleich teilnehmen.

i18n.commitEncoding

Zeichenkodierung, in der Commit-Nachrichten gespeichert werden; Git selbst kümmert sich nicht darum, aber diese Information ist z. B. beim Importieren von Commits aus E-Mails oder im grafischen Verlaufsbrowser gitk (und möglicherweise an anderen Stellen in Zukunft oder in anderen Porzellansorten) notwendig. Siehe z. B. git-mailinfo[1]. Standard ist utf-8.

i18n.logOutputEncoding

Zeichenkodierung, in die Commit-Nachrichten bei Ausführung von git log und ähnlichen Befehlen konvertiert werden.

imap.folder

Der Ordner, in den die E-Mails abgelegt werden sollen, typischerweise der Ordner Entwürfe. Zum Beispiel: INBOX.Drafts, INBOX/Drafts oder [Gmail]/Drafts. Der IMAP-Ordner, mit dem interagiert werden soll, MUSS angegeben werden; der Wert dieser Konfigurationsvariablen wird als Standard-Fallback-Wert verwendet, wenn die Option --folder nicht angegeben wird.

imap.tunnel

Befehl zur Einrichtung eines Tunnels zum IMAP-Server, über den Befehle anstelle einer direkten Netzwerkverbindung zum Server geleitet werden. Erforderlich, wenn imap.host nicht gesetzt ist.

imap.host

Eine URL, die den Server identifiziert. Verwenden Sie ein imap://-Präfix für ungesicherte Verbindungen und ein imaps://-Präfix für gesicherte Verbindungen. Wird ignoriert, wenn imap.tunnel gesetzt ist, ist aber andernfalls erforderlich.

imap.user

Der Benutzername, der bei der Anmeldung am Server verwendet werden soll.

imap.pass

Das Passwort, das bei der Anmeldung am Server verwendet werden soll.

imap.port

Eine Ganzzahl-Portnummer, zu der auf dem Server verbunden werden soll. Standard ist 143 für imap://-Hosts und 993 für imaps://-Hosts. Wird ignoriert, wenn imap.tunnel gesetzt ist.

imap.sslverify

Ein boolescher Wert, um die Verifizierung des Serverzertifikats für die SSL/TLS-Verbindung zu aktivieren/deaktivieren. Standard ist true. Wird ignoriert, wenn imap.tunnel gesetzt ist.

imap.preformattedHTML

Ein boolescher Wert, um die Verwendung von HTML-Kodierung beim Senden eines Patches zu aktivieren/deaktivieren. Ein HTML-kodierter Patch wird mit <pre> umschlossen und hat einen Content-Type von text/html. Ironischerweise führt die Aktivierung dieser Option dazu, dass Thunderbird den Patch als E-Mail vom Typ plain/text, format=fixed sendet. Standard ist false.

imap.authMethod

Gibt die Authentifizierungsmethode zur Authentifizierung beim IMAP-Server an. Wenn Git mit der Option NO_CURL kompiliert wurde oder wenn Ihre Curl-Version älter als 7.34.0 ist oder wenn Sie git-imap-send mit der Option --no-curl ausführen, sind die einzigen unterstützten Methoden PLAIN, CRAM-MD5, OAUTHBEARER und XOAUTH2. Wenn dies nicht gesetzt ist, verwendet git imap-send den grundlegenden IMAP-Plaintext-Befehl LOGIN.

include.path
includeIf.<condition>.path

Spezielle Variablen zum Einbinden anderer Konfigurationsdateien. Siehe den Abschnitt "CONFIGURATION FILE" in der Hauptdokumentation von git-config[1], insbesondere die Unterabschnitte "Includes" und "Conditional Includes".

index.recordEndOfIndexEntries

Gibt an, ob die Indexdatei einen Abschnitt "End Of Index Entry" enthalten soll. Dies reduziert die Ladezeit des Index auf Mehrprozessormaschinen, erzeugt aber beim Lesen des Index mit Git-Versionen vor 2.20 die Meldung "ignoring EOIE extension". Standardmäßig true, wenn index.threads explizit aktiviert wurde, andernfalls false.

index.recordOffsetTable

Gibt an, ob die Indexdatei einen Abschnitt "Index Entry Offset Table" enthalten soll. Dies reduziert die Ladezeit des Index auf Mehrprozessormaschinen, erzeugt aber beim Lesen des Index mit Git-Versionen vor 2.20 die Meldung "ignoring IEOT extension". Standardmäßig true, wenn index.threads explizit aktiviert wurde, andernfalls false.

index.sparse

Wenn aktiviert, wird der Index mit Sparse-Directory-Einträgen geschrieben. Dies hat keine Auswirkungen, es sei denn, core.sparseCheckout und core.sparseCheckoutCone sind beide aktiviert. Standard ist false.

index.threads

Gibt die Anzahl der Threads an, die beim Laden des Index gestartet werden sollen. Dies soll die Ladezeit des Index auf Mehrprozessormaschinen reduzieren. Die Angabe von 0 oder true führt dazu, dass Git die Anzahl der CPUs automatisch erkennt und die Anzahl der Threads entsprechend einstellt. Die Angabe von 1 oder false deaktiviert die Multithreading-Unterstützung. Standard ist true.

index.version

Gibt die Version an, mit der neue Indexdateien initialisiert werden sollen. Dies hat keine Auswirkungen auf bestehende Repositories. Wenn feature.manyFiles aktiviert ist, ist der Standardwert 4.

index.skipHash

Wenn aktiviert, wird der abschließende Hash für die Indexdatei nicht berechnet. Dies beschleunigt Git-Befehle, die den Index manipulieren, wie z. B. git add, git commit oder git status. Anstatt die Prüfsumme zu speichern, werden abschließend Bytes mit dem Wert Null geschrieben, was anzeigt, dass die Berechnung übersprungen wurde.

Wenn Sie index.skipHash aktivieren, weigern sich Git-Clients, die älter als 2.13.0 sind, den Index zu parsen, und Git-Clients, die älter als 2.40.0 sind, melden einen Fehler während git fsck.

init.templateDir

Gibt das Verzeichnis an, aus dem Vorlagen kopiert werden. (Siehe Abschnitt "TEMPLATE DIRECTORY" von git-init[1].)

init.defaultBranch

Ermöglicht die Überschreibung des Standardzweignamens, z. B. beim Initialisieren eines neuen Repositorys.

init.defaultObjectFormat

Ermöglicht die Überschreibung des Standard-Objektformats für neue Repositories. Siehe --object-format= in git-init[1]. Sowohl die Befehlszeilenoption als auch die Umgebungsvariable GIT_DEFAULT_HASH haben Vorrang vor dieser Konfiguration.

init.defaultRefFormat

Ermöglicht die Überschreibung des Standard-Ref-Speicherformats für neue Repositories. Siehe --ref-format= in git-init[1]. Sowohl die Befehlszeilenoption als auch die Umgebungsvariable GIT_DEFAULT_REF_FORMAT haben Vorrang vor dieser Konfiguration.

instaweb.browser

Gibt das Programm an, das zum Durchsuchen Ihres Arbeitsverzeichnisses in Gitweb verwendet wird. Siehe git-instaweb[1].

instaweb.httpd

Die HTTP-Daemon-Befehlszeile zum Starten von Gitweb in Ihrem Arbeitsverzeichnis. Siehe git-instaweb[1].

instaweb.local

Wenn true, wird der von git-instaweb[1] gestartete Webserver an die lokale IP (127.0.0.1) gebunden.

instaweb.modulePath

Der Standardmodulpfad für git-instaweb[1] anstelle von /usr/lib/apache2/modules. Wird nur verwendet, wenn httpd Apache ist.

instaweb.port

Die Portnummer, an die der Gitweb-HTTPd gebunden werden soll. Siehe git-instaweb[1].

interactive.singleKey

Wenn auf true gesetzt, kann der Benutzer in interaktiven Befehlen eine Eingabe mit einem einzigen Buchstaben (d. h. ohne die Eingabetaste zu drücken) vornehmen. Dies wird derzeit vom --patch-Modus von git-add[1], git-checkout[1], git-restore[1], git-commit[1], git-reset[1] und git-stash[1] verwendet.

interactive.diffFilter

Wenn ein interaktiver Befehl (wie z. B. git add --patch) einen farbigen Diff anzeigt, wird Git den Diff durch den mit dieser Konfigurationsvariable definierten Shell-Befehl leiten. Der Befehl kann den Diff weiter für menschliche Lesbarkeit aufbereiten, vorausgesetzt, er behält eine Eins-zu-Eins-Entsprechung mit den Zeilen des ursprünglichen Diffs bei. Standardmäßig deaktiviert (keine Filterung).

log.abbrevCommit

Wenn true, gehen git-log[1], git-show[1] und git-whatchanged[1] davon aus, dass --abbrev-commit verwendet wird. Sie können diese Option mit --no-abbrev-commit überschreiben.

log.date

Legt den Standard-Datums-/Zeitmodus für den Befehl log fest. Das Setzen eines Werts für log.date ist ähnlich der Verwendung der Option --date von git log. Einzelheiten finden Sie in git-log[1].

Wenn das Format auf "auto:foo" gesetzt ist und der Pager verwendet wird, wird das Format "foo" für das Datumsformat verwendet. Andernfalls wird "default" verwendet.

log.decorate

Gibt die Referenznamen aller Commits aus, die vom Log-Befehl angezeigt werden. Mögliche Werte sind

short

die Referenznamenspräfixe refs/heads/, refs/tags/ und refs/remotes/ werden nicht gedruckt.

full

der vollständige Referenzname (einschließlich Präfix) wird gedruckt.

auto

Wenn die Ausgabe an ein Terminal geht, werden die Referenznamen so angezeigt, als wäre short angegeben, andernfalls werden keine Referenznamen angezeigt.

Dies ist dasselbe wie die Option --decorate von git log.

log.initialDecorationSet

Standardmäßig zeigt git log nur Dekorationen für bestimmte bekannte Referenz-Namespaces an. Wenn all angegeben ist, werden alle Referenzen als Dekorationen angezeigt.

log.excludeDecoration

Schließt die angegebenen Muster von den Log-Dekorationen aus. Dies ähnelt der Befehlszeilenoption --decorate-refs-exclude, aber die Konfigurationsoption kann durch die Option --decorate-refs überschrieben werden.

log.diffMerges

Setzt das Diff-Format, das verwendet wird, wenn --diff-merges=on angegeben ist. Siehe --diff-merges in git-log[1] für Details. Standard ist separate.

log.follow

Wenn true, verhält sich git log so, als wäre die Option --follow verwendet worden, wenn ein einzelner <path> angegeben ist. Dies hat die gleichen Einschränkungen wie --follow, d. h. es kann nicht zum Verfolgen mehrerer Dateien verwendet werden und funktioniert nicht gut bei nicht-linearem Verlauf.

log.graphColors

Eine durch Kommas getrennte Liste von Farben, die zum Zeichnen von Verlaufslinien in git log --graph verwendet werden können.

log.showRoot

Wenn true, wird der erste Commit als großes Erstellungsereignis angezeigt. Dies entspricht einem Diff gegen einen leeren Baum. Werkzeuge wie git-log[1] oder git-whatchanged[1], die normalerweise den Root-Commit ausblenden, werden ihn nun anzeigen. Standardmäßig true.

log.showSignature

Wenn true, gehen git-log[1], git-show[1] und git-whatchanged[1] davon aus, dass --show-signature verwendet wird.

log.mailmap

Wenn true, gehen git-log[1], git-show[1] und git-whatchanged[1] davon aus, dass --use-mailmap verwendet wird, andernfalls gehen sie von --no-use-mailmap aus. Standardmäßig true.

lsrefs.unborn

Kann "advertise" (Standard), "allow" oder "ignore" sein. Wenn "advertise", antwortet der Server auf das Senden von "unborn" durch den Client (wie in gitprotocol-v2[5] beschrieben) und gibt die Unterstützung für diese Funktion während der Fähigkeitsanzeige von Protokoll v2 bekannt. "allow" ist dasselbe wie "advertise", mit der Ausnahme, dass der Server die Unterstützung für diese Funktion nicht bekannt gibt; dies ist nützlich für Last-verteilte Server, die nicht atomar aktualisiert werden können (zum Beispiel), da der Administrator "allow" konfigurieren und nach einer Verzögerung "advertise" konfigurieren könnte.

mailinfo.scissors

Wenn true, verhält sich git-mailinfo[1] (und damit git-am[1]) standardmäßig so, als ob die Option --scissors auf der Befehlszeile angegeben worden wäre. Wenn aktiv, entfernt diese Funktion alles aus dem Nachrichtentext vor einer Scherenschnittlinie (d. h. hauptsächlich aus ">8", "8<" und "-").

mailmap.file

Der Speicherort einer zusätzlichen Mailmap-Datei. Die Standard-Mailmap, die sich im Stammverzeichnis des Repositories befindet, wird zuerst geladen, dann die von dieser Variablen angegebene Mailmap-Datei. Der Speicherort der Mailmap-Datei kann sich in einem Unterverzeichnis des Repositories oder außerhalb des Repositories befinden. Siehe git-shortlog[1] und git-blame[1].

mailmap.blob

Wie mailmap.file, aber betrachtet den Wert als Referenz auf einen Blob im Repository. Wenn sowohl mailmap.file als auch mailmap.blob angegeben sind, werden beide geparst, wobei Einträge aus mailmap.file Vorrang haben. In einem Bare-Repository ist der Standardwert HEAD:.mailmap. In einem nicht-Bare-Repository ist der Standardwert leer.

maintenance.auto

Diese boolesche Konfigurationsoption steuert, ob einige Befehle git maintenance run --auto ausführen, nachdem sie ihre normale Arbeit erledigt haben. Standard ist true.

maintenance.autoDetach

Viele Git-Befehle lösen nach dem Schreiben von Daten in das Repository eine automatische Wartung aus. Diese boolesche Konfigurationsoption steuert, ob diese automatische Wartung im Vordergrund stattfindet oder ob der Wartungsprozess abgekoppelt wird und im Hintergrund weiterläuft.

Wenn nicht gesetzt, wird der Wert von gc.autoDetach als Fallback verwendet. Standard ist true, wenn beide nicht gesetzt sind, d. h. der Wartungsprozess wird abgekoppelt.

maintenance.strategy

Diese String-Konfigurationsoption bietet eine Möglichkeit, eine von mehreren empfohlenen Strategien für die Repository-Wartung anzugeben. Dies beeinflusst, welche Aufgaben während git maintenance run ausgeführt werden, sofern keine --task=<task>-Argumente angegeben werden. Diese Einstellung wirkt sich auf manuelle, automatische und geplante Wartung aus. Die auszuführenden Aufgaben können je nach Wartungstyp unterschiedlich sein.

Die Wartungsstrategie kann durch Setzen von maintenance.<task>.enabled und maintenance.<task>.schedule weiter verfeinert werden. Wenn diese gesetzt sind, werden diese Werte anstelle der von maintenance.strategy bereitgestellten Standardwerte verwendet.

Die möglichen Strategien sind

  • none: Diese Strategie bedeutet, dass überhaupt keine Aufgaben ausgeführt werden. Dies ist die Standardstrategie für geplante Wartung.

  • gc: Diese Strategie führt die gc-Aufgabe aus. Dies ist die Standardstrategie für manuelle Wartung.

  • geometric: Diese Strategie führt geometrisches Repacking von Packfiles durch und hält Hilfsdatenstrukturen auf dem neuesten Stand. Die Strategie löscht Daten im Reflog und entfernt Worktrees, die nicht mehr gefunden werden können. Wenn die geometrische Repacking-Strategie entscheiden würde, ein All-into-One-Repack durchzuführen, generiert die Strategie ein Cruft-Pack für alle unerreichbaren Objekte. Objekte, die bereits Teil eines Cruft-Packs sind, werden gelöscht.

    Diese Repacking-Strategie ist ein vollständiger Ersatz für die gc-Strategie und wird für große Repositories empfohlen.

  • incremental: Diese Einstellung optimiert für die Durchführung kleiner Wartungsaktivitäten, die keine Daten löschen. Sie plant nicht die gc-Aufgabe, führt aber stündlich die Aufgaben prefetch und commit-graph aus, täglich die Aufgaben loose-objects und incremental-repack und wöchentlich die Aufgabe pack-refs. Manuelle Repository-Wartung verwendet die gc-Aufgabe.

maintenance.<task>.enabled

Diese boolesche Konfigurationsoption steuert, ob die Wartungsaufgabe mit dem Namen <task> ausgeführt wird, wenn keine --task-Option an git maintenance run übergeben wird. Diese Konfigurationswerte werden ignoriert, wenn eine --task-Option vorhanden ist. Standardmäßig ist nur maintenance.gc.enabled true.

maintenance.<task>.schedule

Diese Konfigurationsoption steuert, ob die gegebene <task> während eines git maintenance run --schedule=<frequency>-Befehls ausgeführt wird oder nicht. Der Wert muss "hourly", "daily" oder "weekly" sein.

maintenance.commit-graph.auto

Diese Ganzzahl-Konfigurationsoption steuert, wie oft die commit-graph-Aufgabe als Teil von git maintenance run --auto ausgeführt werden soll. Wenn sie Null ist, wird die commit-graph-Aufgabe nicht mit der --auto-Option ausgeführt. Ein negativer Wert zwingt die Aufgabe, jedes Mal ausgeführt zu werden. Andernfalls impliziert ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der erreichbaren Commits, die nicht in der Commit-Graph-Datei enthalten sind, mindestens dem Wert von maintenance.commit-graph.auto entspricht. Der Standardwert ist 100.

maintenance.loose-objects.auto

Diese Ganzzahl-Konfigurationsoption steuert, wie oft die loose-objects-Aufgabe als Teil von git maintenance run --auto ausgeführt werden soll. Wenn sie Null ist, wird die loose-objects-Aufgabe nicht mit der --auto-Option ausgeführt. Ein negativer Wert zwingt die Aufgabe, jedes Mal ausgeführt zu werden. Andernfalls impliziert ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der losen Objekte mindestens dem Wert von maintenance.loose-objects.auto entspricht. Der Standardwert ist 100.

maintenance.loose-objects.batchSize

Diese Ganzzahl-Konfigurationsoption steuert die maximale Anzahl loser Objekte, die während der loose-objects-Aufgabe in ein Packfile geschrieben werden. Der Standardwert ist fünfzigtausend. Verwenden Sie den Wert 0, um keine Begrenzung anzuzeigen.

maintenance.incremental-repack.auto

Diese Ganzzahl-Konfigurationsoption steuert, wie oft die incremental-repack-Aufgabe als Teil von git maintenance run --auto ausgeführt werden soll. Wenn sie Null ist, wird die incremental-repack-Aufgabe nicht mit der --auto-Option ausgeführt. Ein negativer Wert zwingt die Aufgabe, jedes Mal ausgeführt zu werden. Andernfalls impliziert ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der Packfiles, die nicht im Multi-Pack-Index sind, mindestens dem Wert von maintenance.incremental-repack.auto entspricht. Der Standardwert ist 10.

maintenance.geometric-repack.auto

Diese Ganzzahl-Konfigurationsoption steuert, wie oft die geometric-repack-Aufgabe als Teil von git maintenance run --auto ausgeführt werden soll. Wenn sie Null ist, wird die geometric-repack-Aufgabe nicht mit der --auto-Option ausgeführt. Ein negativer Wert zwingt die Aufgabe, jedes Mal ausgeführt zu werden. Andernfalls impliziert ein positiver Wert, dass der Befehl entweder ausgeführt werden soll, wenn Packfiles zusammengeführt werden müssen, um die geometrische Progression beizubehalten, oder wenn mindestens so viele lose Objekte vorhanden sind, die in ein neues Packfile geschrieben würden. Der Standardwert ist 100.

maintenance.geometric-repack.splitFactor

Diese Ganzzahl-Konfigurationsoption steuert den Faktor, der für die geometrische Sequenz verwendet wird. Weitere Informationen finden Sie in der Option --geometric= in git-repack[1]. Standardmäßig ist dies 2.

maintenance.reflog-expire.auto

Diese Ganzzahl-Konfigurationsoption steuert, wie oft die reflog-expire-Aufgabe als Teil von git maintenance run --auto ausgeführt werden soll. Wenn sie Null ist, wird die reflog-expire-Aufgabe nicht mit der --auto-Option ausgeführt. Ein negativer Wert zwingt die Aufgabe, jedes Mal ausgeführt zu werden. Andernfalls impliziert ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der abgelaufenen Reflog-Einträge im "HEAD"-Reflog mindestens dem Wert von maintenance.loose-objects.auto entspricht. Der Standardwert ist 100.

maintenance.rerere-gc.auto

Diese Ganzzahl-Konfigurationsoption steuert, wie oft die rerere-gc-Aufgabe als Teil von git maintenance run --auto ausgeführt werden soll. Wenn sie Null ist, wird die rerere-gc-Aufgabe nicht mit der --auto-Option ausgeführt. Ein negativer Wert zwingt die Aufgabe, jedes Mal ausgeführt zu werden. Andernfalls impliziert jeder positive Wert, dass der Befehl ausgeführt wird, wenn das Verzeichnis "rr-cache" existiert und mindestens einen Eintrag hat, unabhängig davon, ob er veraltet ist oder nicht. Diese Heuristik kann in Zukunft verfeinert werden. Der Standardwert ist 1.

maintenance.worktree-prune.auto

Diese Ganzzahl-Konfigurationsoption steuert, wie oft die worktree-prune-Aufgabe als Teil von git maintenance run --auto ausgeführt werden soll. Wenn sie Null ist, wird die worktree-prune-Aufgabe nicht mit der --auto-Option ausgeführt. Ein negativer Wert zwingt die Aufgabe, jedes Mal ausgeführt zu werden. Andernfalls impliziert ein positiver Wert, dass der Befehl ausgeführt werden soll, wenn die Anzahl der prunebaren Worktrees den Wert überschreitet. Der Standardwert ist 1.

man.viewer

Geben Sie die Programme an, die zur Anzeige von Hilfe im man-Format verwendet werden können. Siehe git-help[1].

man.<tool>.cmd

Geben Sie den Befehl zum Aufrufen des angegebenen Man-Viewers an. Der angegebene Befehl wird in der Shell ausgewertet, wobei die Manpage als Argument übergeben wird. (Siehe git-help[1].)

man.<tool>.path

Überschreiben Sie den Pfad für das angegebene Werkzeug, das zur Anzeige von Hilfe im man-Format verwendet werden kann. Siehe git-help[1].

merge.conflictStyle

Geben Sie den Stil an, in dem konfligierende Hunks beim Zusammenführen in Arbeitsbaumdateien geschrieben werden. Der Standard ist "merge", der eine <<<<<<<-Konfliktmarkierung, Änderungen, die von einer Seite vorgenommen wurden, eine =======-Markierung, Änderungen, die von der anderen Seite vorgenommen wurden, und dann eine >>>>>>>-Markierung anzeigt. Ein alternativer Stil, "diff3", fügt eine |||||||-Markierung und den ursprünglichen Text vor der =======-Markierung hinzu. Der "merge"-Stil neigt dazu, kleinere Konfliktregionen als diff3 zu erzeugen, sowohl wegen des Ausschlusses des Originaltextes als auch, weil Übereinstimmungen zwischen den Zeilen auf beiden Seiten, wenn sie in der Nähe eines Teils der Konfliktregion liegen, einfach aus der Konfliktregion herausgezogen werden. Ein weiterer alternativer Stil, "zdiff3", ist ähnlich wie diff3, entfernt jedoch übereinstimmende Zeilen auf beiden Seiten aus der Konfliktregion, wenn diese übereinstimmenden Zeilen nahe dem Anfang oder Ende einer Konfliktregion erscheinen.

merge.defaultToUpstream

Wenn merge ohne Commit-Argument aufgerufen wird, werden die für den aktuellen Branch konfigurierten Upstream-Branches zusammengeführt, indem deren zuletzt beobachtete Werte, die in ihren Remote-Tracking-Branches gespeichert sind, verwendet werden. Die Werte von branch.<current branch>.merge, die die Branches im Remote mit dem Namen branch.<current-branch>.remote angeben, werden konsultiert, und dann werden sie über remote.<remote>.fetch auf ihre entsprechenden Remote-Tracking-Branches abgebildet, und die Spitzen dieser Tracking-Branches werden zusammengeführt. Standardmäßig ist dies true.

merge.ff

Standardmäßig erstellt Git keinen zusätzlichen Merge-Commit, wenn ein Commit zusammengeführt wird, der ein Nachfahre des aktuellen Commits ist. Stattdessen wird die Spitze des aktuellen Branches per Fast-Forward verschoben. Wenn diese Variable auf false gesetzt ist, weist dies Git an, in einem solchen Fall einen zusätzlichen Merge-Commit zu erstellen (entspricht der Angabe der Option --no-ff auf der Befehlszeile). Wenn sie auf only gesetzt ist, sind nur solche Fast-Forward-Merges erlaubt (entspricht der Angabe der Option --ff-only auf der Befehlszeile).

merge.verifySignatures

Wenn true, ist dies äquivalent zur Befehlszeilenoption --verify-signatures. Details siehe git-merge[1].

merge.branchdesc

Zusätzlich zu den Branch-Namen werden auch die zugehörigen Branch-Beschreibungs-Texte in die Log-Nachricht aufgenommen. Standardmäßig false.

merge.log

Zusätzlich zu den Branch-Namen werden bis zu der angegebenen Anzahl von Einzeilenbeschreibungen aus den tatsächlich zusammengeführten Commits in die Log-Nachricht aufgenommen. Standardmäßig false, und true ist ein Synonym für 20.

merge.suppressDest

Durch Hinzufügen eines Globs, der auf die Namen von Integrations-Branches passt, zu dieser mehrwertigen Konfigurationsvariablen wird die Standard-Merge-Nachricht, die für Merges in diese Integrations-Branches berechnet wird, "into <branch-name>" aus ihrem Titel weggelassen.

Ein Element mit einem leeren Wert kann verwendet werden, um die Liste der Globs zu löschen, die aus früheren Konfigurationseinträgen angesammelt wurden. Wenn keine merge.suppressDest-Variable definiert ist, wird der Standardwert master aus Gründen der Abwärtskompatibilität verwendet.

merge.renameLimit

Die Anzahl der Dateien, die im vollständigen Teil der Umbenennungserkennung während eines Merges berücksichtigt werden. Wenn nicht angegeben, wird standardmäßig der Wert von diff.renameLimit verwendet. Wenn weder merge.renameLimit noch diff.renameLimit angegeben sind, ist der aktuelle Standardwert 7000. Diese Einstellung hat keine Auswirkung, wenn die Umbenennungserkennung deaktiviert ist.

merge.renames

Ob Git Umbenennungen erkennt. Wenn auf false gesetzt, ist die Umbenennungserkennung deaktiviert. Wenn auf true gesetzt, ist die grundlegende Umbenennungserkennung aktiviert. Standardmäßig wird der Wert von diff.renames verwendet.

merge.directoryRenames

Ob Git Verzeichnis-Umbenennungen erkennt, was sich darauf auswirkt, was beim Zusammenführen mit neuen Dateien geschieht, die einem Verzeichnis auf einer Seite der Historie hinzugefügt wurden, wenn dieses Verzeichnis auf der anderen Seite der Historie umbenannt wurde. Mögliche Werte sind

false

Die Erkennung von Verzeichnisumbenennungen ist deaktiviert, was bedeutet, dass solche neuen Dateien im alten Verzeichnis verbleiben.

true

Die Erkennung von Verzeichnisumbenennungen ist aktiviert, was bedeutet, dass solche neuen Dateien in das neue Verzeichnis verschoben werden.

conflict

Für solche Pfade wird ein Konflikt gemeldet.

Wenn merge.renames false ist, wird merge.directoryRenames ignoriert und als false behandelt. Standardmäßig ist dies conflict.

merge.renormalize

Teilen Sie Git mit, dass sich die kanonische Darstellung von Dateien im Repository im Laufe der Zeit geändert hat (z. B. frühere Commits zeichnen Textdateien mit CRLF-Zeilenenden auf, neuere verwenden LF-Zeilenenden). In einem solchen Repository kann Git für jede Datei, bei der eine Dreifach-Inhalts-Zusammenführung erforderlich ist, die in Commits aufgezeichneten Daten in eine kanonische Form konvertieren, bevor eine Zusammenführung durchgeführt wird, um unnötige Konflikte zu reduzieren. Weitere Informationen finden Sie im Abschnitt "Merging branches with differing checkin/checkout attributes" in gitattributes[5].

merge.stat

Was, wenn überhaupt etwas, zwischen ORIG_HEAD und dem Merge-Ergebnis am Ende des Merges ausgegeben werden soll. Mögliche Werte sind

false

Nichts anzeigen.

true

Zeigt git diff --diffstat --summary ORIG_HEAD an.

compact

Zeigt git diff --compact-summary ORIG_HEAD an.

aber jeder nicht erkannte Wert (z.B. ein Wert, der von einer zukünftigen Git-Version hinzugefügt wird) wird anstelle eines Fehlers als true behandelt. Standardmäßig true.

merge.autoStash

Wenn auf true gesetzt, wird vor dem Beginn des Vorgangs automatisch ein temporärer Stash-Eintrag erstellt und nach Beendigung des Vorgangs angewendet. Das bedeutet, dass Sie einen Merge auf einem schmutzigen Arbeitsbaum ausführen können. Verwenden Sie es jedoch mit Vorsicht: Das endgültige Anwenden des Stashes nach einem erfolgreichen Merge kann zu nicht trivialen Konflikten führen. Diese Option kann durch die Optionen --no-autostash und --autostash von git-merge[1] überschrieben werden. Standardmäßig ist sie false.

merge.tool

Steuert, welches Merge-Tool von git-mergetool[1] verwendet wird. Die folgende Liste zeigt die gültigen integrierten Werte. Jeder andere Wert wird als benutzerdefiniertes Merge-Tool behandelt und erfordert die Definition einer entsprechenden Variablen mergetool.<tool>.cmd.

merge.guitool

Steuert, welches Merge-Tool von git-mergetool[1] verwendet wird, wenn die Flagge -g/--gui gesetzt ist. Die folgende Liste zeigt die gültigen integrierten Werte. Jeder andere Wert wird als benutzerdefiniertes Merge-Tool behandelt und erfordert die Definition einer entsprechenden Variablen mergetool.<guitool>.cmd.

  • araxis

  • bc

  • codecompare

  • deltawalker

  • diffmerge

  • diffuse

  • ecmerge

  • emerge

  • examdiff

  • guiffy

  • gvimdiff

  • kdiff3

  • meld

  • nvimdiff

  • opendiff

  • p4merge

  • smerge

  • tkdiff

  • tortoisemerge

  • vimdiff

  • vscode

  • winmerge

  • xxdiff

merge.verbosity

Steuert die Menge der von der rekursiven Merge-Strategie ausgegebenen Informationen. Stufe 0 gibt nichts außer einer abschließenden Fehlermeldung aus, wenn Konflikte erkannt wurden. Stufe 1 gibt nur Konflikte aus, Stufe 2 gibt Konflikte und Dateiänderungen aus. Stufe 5 und höher gibt Debugging-Informationen aus. Der Standard ist Stufe 2. Kann durch die Umgebungsvariable GIT_MERGE_VERBOSITY überschrieben werden.

merge.<driver>.name

Definiert einen menschenlesbaren Namen für einen benutzerdefinierten Low-Level-Merge-Treiber. Siehe gitattributes[5] für Details.

merge.<driver>.driver

Definiert den Befehl, der einen benutzerdefinierten Low-Level-Merge-Treiber implementiert. Siehe gitattributes[5] für Details.

merge.<driver>.recursive

Benennt einen Low-Level-Merge-Treiber, der bei der Durchführung eines internen Merges zwischen gemeinsamen Vorfahren verwendet werden soll. Siehe gitattributes[5] für Details.

mergetool.<tool>.path

Überschreiben Sie den Pfad für das angegebene Werkzeug. Dies ist nützlich, falls Ihr Werkzeug nicht im $PATH enthalten ist.

mergetool.<tool>.cmd

Geben Sie den Befehl zum Aufrufen des angegebenen Merge-Tools an. Der angegebene Befehl wird in der Shell ausgewertet, wobei die folgenden Variablen verfügbar sind: BASE ist der Name einer temporären Datei, die die gemeinsame Basis der zu mergenden Dateien enthält, falls verfügbar; LOCAL ist der Name einer temporären Datei, die den Inhalt der Datei im aktuellen Branch enthält; REMOTE ist der Name einer temporären Datei, die den Inhalt der Datei aus dem zu mergenden Branch enthält; MERGED enthält den Namen der Datei, in die das Merge-Tool die Ergebnisse eines erfolgreichen Merges schreiben soll.

mergetool.<tool>.hideResolved

Ermöglicht dem Benutzer, den globalen mergetool.hideResolved-Wert für ein bestimmtes Werkzeug zu überschreiben. Siehe mergetool.hideResolved für die vollständige Beschreibung.

mergetool.<tool>.trustExitCode

Geben Sie für einen benutzerdefinierten Merge-Befehl an, ob der Exit-Code des Merge-Befehls verwendet werden kann, um festzustellen, ob der Merge erfolgreich war. Wenn dies nicht auf true gesetzt ist, wird der Zeitstempel der Merge-Ziel-Datei überprüft, und der Merge wird als erfolgreich angenommen, wenn die Datei aktualisiert wurde; andernfalls wird der Benutzer aufgefordert, den Erfolg des Merges anzugeben.

mergetool.meld.hasOutput

Ältere Versionen von meld unterstützen die Option --output nicht. Git versucht zu erkennen, ob meld --output unterstützt, indem es die Ausgabe von meld --help analysiert. Die Konfiguration von mergetool.meld.hasOutput bewirkt, dass Git diese Prüfungen überspringt und den konfigurierten Wert verwendet. Das Setzen von mergetool.meld.hasOutput auf true weist Git an, die Option --output bedingungslos zu verwenden, und false vermeidet die Verwendung von --output.

mergetool.meld.useAutoMerge

Wenn --auto-merge angegeben wird, führt meld automatisch alle nicht-konfligierenden Teile zusammen, hebt die konfligierenden Teile hervor und wartet auf die Benutzerentscheidung. Das Setzen von mergetool.meld.useAutoMerge auf true weist Git an, die Option --auto-merge bedingungslos mit meld zu verwenden. Ein Wert von auto bewirkt, dass Git erkennt, ob --auto-merge unterstützt wird, und --auto-merge nur verwendet, wenn es verfügbar ist. Ein Wert von false vermeidet die Verwendung von --auto-merge vollständig und ist der Standardwert.

mergetool.<variant>.layout

Konfigurieren Sie das Split-Fenster-Layout für vimdiffs <variant>, was entweder vimdiff, nvimdiff oder gvimdiff ist. Beim Starten von git mergetool mit --tool=<variant> (oder ohne --tool, wenn merge.tool als <variant> konfiguriert ist), konsultiert Git mergetool.<variant>.layout, um das Layout des Werkzeugs zu bestimmen. Wenn die spezifische Konfiguration für die Variante nicht verfügbar ist, wird die von vimdiff als Fallback verwendet. Wenn auch diese nicht verfügbar ist, wird ein Standardlayout mit 4 Fenstern verwendet. Zur Konfiguration des Layouts siehe den Abschnitt "BACKEND SPECIFIC HINTS" in git-mergetool[1].

mergetool.hideResolved

Während eines Merges löst Git automatisch so viele Konflikte wie möglich und schreibt die Datei $MERGED, die Konfliktmarker um alle Konflikte enthält, die es nicht lösen kann; $LOCAL und $REMOTE sind normalerweise die Versionen der Datei von vor der Konfliktlösung durch Git. Dieses Flag bewirkt, dass $LOCAL und $REMOTE überschrieben werden, sodass nur die ungelösten Konflikte dem Merge-Tool präsentiert werden. Kann pro Werkzeug über die Konfigurationsvariable mergetool.<tool>.hideResolved konfiguriert werden. Standardmäßig false.

mergetool.keepBackup

Nach der Durchführung eines Merges kann die Originaldatei mit Konfliktmarkierungen als Datei mit der Erweiterung .orig gespeichert werden. Wenn diese Variable auf false gesetzt ist, wird diese Datei nicht beibehalten. Standardmäßig true (d.h. die Backup-Dateien behalten).

mergetool.keepTemporaries

Beim Aufrufen eines benutzerdefinierten Merge-Tools verwendet Git eine Reihe von temporären Dateien, die dem Tool übergeben werden. Wenn das Tool einen Fehler zurückgibt und diese Variable auf true gesetzt ist, werden diese temporären Dateien beibehalten; andernfalls werden sie entfernt, nachdem das Tool beendet wurde. Standardmäßig false.

mergetool.writeToTemp

Git schreibt standardmäßig temporäre BASE, LOCAL und REMOTE-Versionen von konfliktreichen Dateien im Arbeitsbaum. Git versucht, ein temporäres Verzeichnis für diese Dateien zu verwenden, wenn dies auf true gesetzt ist. Standardmäßig false.

mergetool.prompt

Fragen Sie vor jedem Aufruf des Merge-Auflösungsprogramms nach.

mergetool.guiDefault

Setzen Sie auf true, um standardmäßig merge.guitool zu verwenden (entspricht der Angabe des Arguments --gui), oder auf auto, um merge.guitool oder merge.tool auszuwählen, abhängig vom Vorhandensein eines DISPLAY-Umgebungsvariablenwertes. Der Standardwert ist false, wobei das Argument --gui explizit angegeben werden muss, damit merge.guitool verwendet wird.

notes.mergeStrategy

Welche Merge-Strategie standardmäßig bei der Auflösung von Notizen-Konflikten gewählt werden soll. Muss einer der Werte manual, ours, theirs, union oder cat_sort_uniq sein. Standardmäßig manual. Siehe den Abschnitt "NOTES MERGE STRATEGIES" in git-notes[1] für weitere Informationen zu jeder Strategie.

Diese Einstellung kann durch Übergabe der Option --strategy an git-notes[1] überschrieben werden.

notes.<name>.mergeStrategy

Welche Merge-Strategie bei einem Notizen-Merge in refs/notes/<name> gewählt werden soll. Dies überschreibt die allgemeinere Einstellung notes.mergeStrategy. Siehe den Abschnitt "NOTES MERGE STRATEGIES" in git-notes[1] für weitere Informationen zu den verfügbaren Strategien.

notes.displayRef

Welcher Ref (oder welche Refs, wenn ein Glob oder mehrfach angegeben), zusätzlich zu dem von core.notesRef oder GIT_NOTES_REF standardmäßig festgelegten Ref, aus dem Notizen gelesen werden sollen, wenn Commit-Nachrichten mit der git log-Befehlsfamilie angezeigt werden.

Diese Einstellung kann mit der Umgebungsvariable GIT_NOTES_DISPLAY_REF überschrieben werden, die eine durch Doppelpunkte getrennte Liste von Refs oder Globs sein muss.

Für nicht existierende Refs wird eine Warnung ausgegeben, ein Glob, der keine Refs findet, wird jedoch stillschweigend ignoriert.

Diese Einstellung kann durch die Option --no-notes für die git log-Befehlsfamilie oder durch die Option --notes=<ref>, die von diesen Befehlen akzeptiert wird, deaktiviert werden.

Der effektive Wert von core.notesRef (möglicherweise überschrieben durch GIT_NOTES_REF) wird ebenfalls implizit zur Liste der anzuzeigenden Refs hinzugefügt.

notes.rewrite.<command>

Beim Umschreiben von Commits mit <command> (derzeit amend oder rebase), wenn diese Variable auf false gesetzt ist, kopiert Git keine Notizen vom Original auf den umgeschriebenen Commit. Standardmäßig true. Siehe auch notes.rewriteRef unten.

Diese Einstellung kann mit der Umgebungsvariable GIT_NOTES_REWRITE_REF überschrieben werden, die eine durch Doppelpunkte getrennte Liste von Refs oder Globs sein muss.

notes.rewriteMode

Beim Kopieren von Notizen während eines Rewrites (siehe notes.rewrite.<command>-Option) wird festgelegt, was zu tun ist, wenn der Ziel-Commit bereits eine Notiz hat. Muss einer der Werte overwrite, concatenate, cat_sort_uniq oder ignore sein. Standardmäßig concatenate.

Diese Einstellung kann mit der Umgebungsvariable GIT_NOTES_REWRITE_MODE überschrieben werden.

notes.rewriteRef

Beim Kopieren von Notizen während eines Rewrites wird der (vollqualifizierte) Ref angegeben, dessen Notizen kopiert werden sollen. Kann ein Glob sein, in diesem Fall werden Notizen aus allen passenden Refs kopiert. Sie können diese Konfiguration auch mehrmals angeben.

Hat keinen Standardwert; Sie müssen diese Variable konfigurieren, um Notizen-Rewriting zu aktivieren. Setzen Sie sie auf refs/notes/commits, um das Rewriting für die Standard-Commit-Notizen zu aktivieren.

Kann mit der Umgebungsvariable GIT_NOTES_REWRITE_REF überschrieben werden. Siehe notes.rewrite.<command> oben für eine weitere Beschreibung seines Formats.

pack.window

Die Fenstergröße, die von git-pack-objects[1] verwendet wird, wenn keine Fenstergröße auf der Befehlszeile angegeben ist. Standardmäßig 10.

pack.depth

Die maximale Delta-Tiefe, die von git-pack-objects[1] verwendet wird, wenn keine maximale Tiefe auf der Befehlszeile angegeben ist. Standardmäßig 50. Maximalwert ist 4095.

pack.windowMemory

Die maximale Speichermenge, die von jedem Thread in git-pack-objects[1] für Pack-Fenster-Speicher verbraucht wird, wenn auf der Befehlszeile keine Begrenzung angegeben ist. Der Wert kann mit "k", "m" oder "g" ergänzt werden. Wenn er nicht konfiguriert ist (oder explizit auf 0 gesetzt ist), gibt es keine Begrenzung.

pack.compression

Eine Ganzzahl von -1..9, die die Kompressionsstufe für Objekte in einer Packdatei angibt. -1 ist der zlib-Standard. 0 bedeutet keine Kompression, und 1..9 sind verschiedene Geschwindigkeit/Größen-Kompromisse, wobei 9 die langsamste ist. Wenn nicht gesetzt, wird standardmäßig core.compression verwendet. Wenn auch dies nicht gesetzt ist, wird standardmäßig -1, der zlib-Standard, verwendet, der "ein Standardkompromiss zwischen Geschwindigkeit und Kompression (derzeit äquivalent zu Stufe 6)" ist.

Beachten Sie, dass die Änderung der Kompressionsstufe nicht alle vorhandenen Objekte automatisch neu komprimiert. Sie können eine Neu-Kompression erzwingen, indem Sie die Option -F an git-repack[1] übergeben.

pack.allowPackReuse

Wenn true oder "single" und wenn Erreichbarkeits-Bitmaps aktiviert sind, versucht pack-objects, Teile der mit Bitmaps versehenen Packdatei wörtlich zu senden. Wenn "multi" und wenn eine Multi-Pack-Erreichbarkeits-Bitmap verfügbar ist, versucht pack-objects, Teile aller Packs im MIDX zu senden.

Wenn nur eine einzige Pack-Bitmap verfügbar ist und pack.allowPackReuse auf "multi" gesetzt ist, werden Teile der bitmappeden Packdatei wiederverwendet. Dies kann den Speicher- und CPU-Verbrauch beim Serven von Fetches reduzieren, kann aber dazu führen, dass ein geringfügig größerer Pack gesendet wird. Standard ist true.

pack.island

Ein erweitertes reguläres Ausdruck, das eine Menge von Delta-Inseln konfiguriert. Siehe "DELTA ISLANDS" in git-pack-objects[1] für Details.

pack.islandCore

Gibt einen Inselnamen an, dessen Objekte zuerst verpackt werden. Dies erstellt eine Art Pseudo-Pack am Anfang eines Packs, sodass die Objekte der angegebenen Insel hoffentlich schneller in jedes Pack kopiert werden können, das einem Benutzer, der diese Objekte anfordert, zur Verfügung gestellt werden soll. In der Praxis bedeutet dies, dass die angegebene Insel wahrscheinlich dem entspricht, was im Repository am häufigsten geklont wird. Siehe auch "DELTA ISLANDS" in git-pack-objects[1].

pack.deltaCacheSize

Die maximal im Cache für Deltas in git-pack-objects[1] zu verwendende Speichergröße in Bytes, bevor sie in eine Packdatei geschrieben werden. Dieser Cache wird verwendet, um die Phase des Schreibens von Objekten zu beschleunigen, indem nicht das endgültige Deltareultat neu berechnet werden muss, sobald die beste Übereinstimmung für alle Objekte gefunden wurde. Das erneute Verpacken großer Repositories auf speicherarmen Maschinen kann dadurch jedoch stark beeinträchtigt werden, insbesondere wenn dieser Cache das System zum Swappen veranlasst. Ein Wert von 0 bedeutet keine Begrenzung. Die kleinste Größe von 1 Byte kann verwendet werden, um diesen Cache virtuell zu deaktivieren. Standard ist 256 MiB.

pack.deltaCacheLimit

Die maximale Größe eines Deltas, das in git-pack-objects[1] gecached wird. Dieser Cache wird verwendet, um die Phase des Schreibens von Objekten zu beschleunigen, indem nicht das endgültige Deltareultat neu berechnet werden muss, sobald die beste Übereinstimmung für alle Objekte gefunden wurde. Standard ist 1000. Maximalwert ist 65535.

pack.threads

Gibt die Anzahl der Threads an, die beim Suchen nach den besten Deltas-Übereinstimmungen gestartet werden. Dies erfordert, dass git-pack-objects[1] mit pthreads kompiliert wurde, andernfalls wird diese Option mit einer Warnung ignoriert. Dies soll die Verpackungszeit auf Mehrprozessormaschinen reduzieren. Der benötigte Speicher für das Delta-Suchfenster wird jedoch mit der Anzahl der Threads multipliziert. Die Angabe von 0 führt dazu, dass Git die Anzahl der CPUs automatisch erkennt und die Anzahl der Threads entsprechend einstellt.

pack.indexVersion

Gibt die Standard-Pack-Indexversion an. Gültige Werte sind 1 für den Legacy-Pack-Index, der von Git-Versionen vor 1.5.2 verwendet wird, und 2 für den neuen Pack-Index mit Funktionen für Packs größer als 4 GB sowie korrektem Schutz gegen das erneute Verpacken beschädigter Packs. Version 2 ist der Standard. Beachten Sie, dass Version 2 erzwungen wird und diese Konfigurationsoption ignoriert wird, sobald der entsprechende Pack größer als 2 GB ist.

Wenn Sie ein altes Git haben, das die Indexdatei (*.idx) der Version 2 nicht versteht, kann das Klonen oder Abrufen über ein nicht-natives Protokoll (z. B. "http"), das sowohl die Pack-Datei (*.pack) als auch die entsprechende Indexdatei (*.idx) von der anderen Seite kopiert, zu einem Repository führen, das mit Ihrer älteren Git-Version nicht zugänglich ist. Wenn die Pack-Datei (*.pack) kleiner als 2 GB ist, können Sie jedoch git-index-pack[1] auf der *.pack-Datei verwenden, um die Indexdatei (*.idx) neu zu generieren.

pack.packSizeLimit

Die maximale Größe eines Packs. Diese Einstellung wirkt sich nur auf das Verpacken in eine Datei beim erneuten Verpacken aus, d. h. das git://-Protokoll ist davon unberührt. Sie kann durch die Option --max-pack-size von git-repack[1] überschrieben werden. Das Erreichen dieses Grenzwerts führt zur Erstellung mehrerer Packdateien.

Beachten Sie, dass diese Option selten nützlich ist und zu einer größeren Gesamtgröße auf der Festplatte (da Git keine Deltas zwischen Packs speichert) und einer schlechteren Laufzeit-Performance (Objektsuche innerhalb mehrerer Packs ist langsamer als in einem einzigen Pack, und Optimierungen wie Reichlichkeits-Bitmaps können mit mehreren Packs nicht umgehen) führen kann.

Wenn Sie Git aktiv mit kleineren Packdateien verwenden müssen (z. B. weil Ihr Dateisystem keine großen Dateien unterstützt), kann diese Option hilfreich sein. Wenn es Ihr Ziel ist, eine Packdatei über ein Medium zu übertragen, das begrenzte Größen unterstützt (z. B. Wechselmedien, die das gesamte Repository nicht speichern können), ist es wahrscheinlich besser, eine einzelne große Packdatei zu erstellen und diese mit einem generischen Multi-Volume-Archivierungstool (z. B. Unix split) aufzuteilen.

Die minimal zulässige Größe ist auf 1 MiB begrenzt. Standard ist unbegrenzt. Gängige Einheiten-Suffixe von k, m oder g werden unterstützt.

pack.useBitmaps

Wenn true, wird Git Pack-Bitmaps (falls verfügbar) beim Verpacken nach stdout (z. B. während der Serverseite eines Fetches) verwenden. Standard ist true. Sie sollten diese Option im Allgemeinen nicht deaktivieren müssen, es sei denn, Sie debuggen Pack-Bitmaps.

pack.useBitmapBoundaryTraversal

Wenn true, verwendet Git einen experimentellen Algorithmus zur Berechnung von Reichlichkeitsabfragen mit Bitmaps. Anstatt vollständige Bitmaps für alle negierten Spitzen aufzubauen und sie dann zu verknüpfen, werden negierte Spitzen mit vorhandenen Bitmaps als additiv betrachtet (d. h. sie werden mit OR in das Ergebnis aufgenommen, wenn sie existieren, andernfalls ignoriert) und stattdessen eine Bitmap am Rand aufgebaut.

Bei Verwendung dieses Algorithmus kann Git zu viele Objekte einschließen, da Bäume, die zu bestimmten UNINTERESTING Commits gehören, nicht geöffnet werden. Diese Ungenauigkeit entspricht dem Nicht-Bitmap-Traversierungsalgorithmus.

In vielen Fällen kann dies eine Beschleunigung gegenüber dem exakten Algorithmus bieten, insbesondere wenn die Bitmap-Abdeckung der negierten Seite der Abfrage schlecht ist.

pack.useSparse

Wenn true, wird Git standardmäßig die Option --sparse in git pack-objects verwenden, wenn die Option --revs vorhanden ist. Dieser Algorithmus durchläuft nur Bäume, die in Pfaden vorkommen, die neue Objekte einführen. Dies kann erhebliche Leistungsvorteile bringen, wenn ein Pack zur Übertragung einer kleinen Änderung berechnet wird. Es ist jedoch möglich, dass zusätzliche Objekte in die Packdatei aufgenommen werden, wenn die enthaltenen Commits bestimmte Arten von direkten Umbenennungen enthalten. Standard ist true.

pack.usePathWalk

Aktiviert die Option --path-walk standardmäßig für git pack-objects-Prozesse. Vollständige Details finden Sie unter git-pack-objects[1].

pack.preferBitmapTips

Bei der Auswahl von Commits, die Bitmaps erhalten sollen, wird ein Commit an der Spitze eines beliebigen Referenzes, der ein Suffix eines beliebigen Werts dieser Konfiguration ist, gegenüber anderen Commits im "Auswahlfenster" bevorzugt.

Beachten Sie, dass die Einstellung dieser Konfiguration auf refs/foo nicht bedeutet, dass die Commits an den Spitzen von refs/foo/bar und refs/foo/baz unbedingt ausgewählt werden. Dies liegt daran, dass Commits für Bitmaps aus einer Reihe von Fenstern variabler Länge ausgewählt werden.

Wenn ein Commit an der Spitze eines Referenzes, der ein Suffix eines beliebigen Werts dieser Konfiguration ist, in einem Fenster gesehen wird, erhält er sofort Vorrang vor jedem anderen Commit in diesem Fenster.

pack.writeBitmaps (veraltet)

Dies ist ein veraltetes Synonym für repack.writeBitmaps.

pack.writeBitmapHashCache

Wenn true, wird Git einen "Hash-Cache"-Abschnitt in den Bitmap-Index (falls einer geschrieben wird) aufnehmen. Dieser Cache kann verwendet werden, um die Delta-Heuristiken von Git zu füttern, was potenziell zu besseren Deltas zwischen bitmappeden und nicht-bitmappeden Objekten führen kann (z. B. beim Serven eines Fetches zwischen einem älteren, bitmappeden Pack und Objekten, die seit dem letzten gc gepusht wurden). Der Nachteil ist, dass er 4 Bytes pro Objekt Festplattenspeicher verbraucht. Standard ist true.

Beim Schreiben einer Multi-Pack-Reichlichkeits-Bitmap werden keine neuen Namens-Hashes berechnet; stattdessen werden alle in einer vorhandenen Bitmap gespeicherten Namens-Hashes beim Schreiben einer neuen Bitmap an ihren entsprechenden Speicherort permutiert.

pack.writeBitmapLookupTable

Wenn true, wird Git einen "Lookup-Table"-Abschnitt in den Bitmap-Index (falls einer geschrieben wird) aufnehmen. Diese Tabelle wird verwendet, um das Laden einzelner Bitmaps so spät wie möglich zu verzögern. Dies kann in Repositories mit relativ großen Bitmap-Indizes von Vorteil sein. Standard ist false.

pack.readReverseIndex

Wenn true, wird Git alle vorhandenen .rev-Dateien lesen (siehe: gitformat-pack[5]). Wenn false, wird der Reverse-Index von Grund auf neu generiert und im Speicher gespeichert. Standard ist true.

pack.writeReverseIndex

Wenn true, wird Git eine entsprechende .rev-Datei (siehe: gitformat-pack[5]) für jede neue Packdatei schreiben, die es schreibt, mit Ausnahme von git-fast-import[1] und dem Bulk-Checkin-Mechanismus. Standard ist true.

pager.<cmd>

Wenn der Wert ein Boolean ist, wird die Paginierung der Ausgabe eines bestimmten Git-Unterbefehls beim Schreiben auf ein TTY aktiviert oder deaktiviert. Andernfalls wird die Paginierung für den Unterbefehl mit dem durch den Wert von pager.<cmd> angegebenen Pager aktiviert. Wenn --paginate oder --no-pager auf der Kommandozeile angegeben wird, hat dies Vorrang vor dieser Option. Um die Paginierung für alle Befehle zu deaktivieren, setzen Sie core.pager oder GIT_PAGER auf cat.

pretty.<name>

Alias für eine --pretty= Formatzeichenfolge, wie in git-log[1] angegeben. Alle hier definierten Aliase können genauso verwendet werden wie die integrierten Pretty-Formate. Zum Beispiel würde die Ausführung von git config pretty.changelog "format:* %H %s" dazu führen, dass der Aufruf git log --pretty=changelog äquivalent zur Ausführung von git log "--pretty=format:* %H %s" ist. Beachten Sie, dass ein Alias mit demselben Namen wie ein integriertes Format stillschweigend ignoriert wird.

promisor.quiet

Wenn auf "true" gesetzt, wird bei der Abfrage zusätzlicher Objekte für einen partiellen Klon --quiet angenommen.

promisor.advertise

Wenn auf "true" gesetzt, verwendet ein Server die Fähigkeit "promisor-remote", siehe gitprotocol-v2[5], um die von ihm verwendeten Promisor-Remotes anzukündigen, falls er einige verwendet. Standard ist "false", was bedeutet, dass die Fähigkeit "promisor-remote" nicht angekündigt wird.

promisor.sendFields

Eine durch Kommas oder Leerzeichen getrennte Liste zusätzlicher felderbezogener Feldnamen. Ein Server sendet diese Feldnamen und die zugehörigen Feldwerte aus seiner Konfiguration, wenn er seine Promisor-Remotes über die Fähigkeit "promisor-remote" ankündigt, siehe gitprotocol-v2[5]. Derzeit werden nur die Feldnamen "partialCloneFilter" und "token" unterstützt.

partialCloneFilter

enthält den Filter für den partiellen Klon, der für das Remote verwendet wird.

token

enthält ein Authentifizierungstoken für das Remote.

Wenn ein Feldname Teil dieser Liste ist und eine entsprechende "remote.foo.<feldname>"-Konfigurationsvariable auf dem Server auf einen nicht-leeren Wert gesetzt ist, werden der Feldname und der Wert beim Ankündigen des Promisor-Remotes "foo" gesendet.

Diese Liste hat keine Auswirkung, es sei denn, die Konfigurationsvariable "promisor.advertise" ist auf "true" gesetzt, und die Felder "name" und "url" werden immer unabhängig von dieser Einstellung angekündigt.

promisor.acceptFromServer

Wenn auf "all" gesetzt, akzeptiert ein Client alle Promisor-Remotes, die ein Server über die Fähigkeit "promisor-remote" ankündigen könnte. Wenn auf "knownName" gesetzt, akzeptiert der Client Promisor-Remotes, die auf dem Client bereits konfiguriert sind und denselben Namen wie die vom Client angekündigten haben. Dies ist nicht sehr sicher, kann aber in einer Unternehmensumgebung verwendet werden, in der Server und Clients vertrauen, Namen und URLs nicht zu wechseln. Wenn auf "knownUrl" gesetzt, akzeptiert der Client Promisor-Remotes, die sowohl denselben Namen als auch dieselbe URL wie die vom Server angekündigten auf dem Client konfiguriert haben. Dies ist sicherer als "all" oder "knownName", daher sollte es nach Möglichkeit anstelle dieser Optionen verwendet werden. Standard ist "none", was bedeutet, dass kein vom Server angekündigtes Promisor-Remote akzeptiert wird. Durch die Akzeptanz eines Promisor-Remotes stimmt der Client zu, dass der Server Objekte weglassen kann, die von diesem Promisor-Remote als Lazy-Fetchbar gelten, aus seinen Antworten auf "fetch" und "clone"-Anfragen vom Client. Namens- und URL-Vergleiche sind case-sensitiv. Siehe gitprotocol-v2[5].

promisor.checkFields

Eine durch Kommas oder Leerzeichen getrennte Liste zusätzlicher felderbezogener Feldnamen. Ein Client prüft, ob die von einem Server übertragenen Werte dieser Felder mit den Werten dieser Felder in seiner eigenen Konfiguration übereinstimmen, bevor er ein Promisor-Remote akzeptiert. Derzeit sind "partialCloneFilter" und "token" die einzigen unterstützten Feldnamen.

Wenn ein Feldname (z. B. "token") für ein angekündigtes Promisor-Remote (z. B. "foo") überprüft wird, müssen drei Bedingungen erfüllt sein, damit die Überprüfung dieses spezifischen Feldes erfolgreich ist.

  1. Die entsprechende lokale Konfiguration (z. B. remote.foo.token) muss gesetzt sein.

  2. Der Server muss das Feld "token" für das Remote "foo" ankündigen.

  3. Der Wert des lokal konfigurierten remote.foo.token muss exakt mit dem vom Server für das Feld "token" angekündigten Wert übereinstimmen.

    Wenn eine dieser Bedingungen für einen in promisor.checkFields aufgelisteten Feldnamen nicht erfüllt ist, wird das angekündigte Remote "foo" abgelehnt.

    Für das Feld "partialCloneFilter" ermöglicht dies dem Client, sicherzustellen, dass der Filter des Servers mit dem lokal erwarteten übereinstimmt, und verhindert so Inkonsistenzen im Filterverhalten. Für das Feld "token" kann dies verwendet werden, um zu überprüfen, ob die Authentifizierungsdaten mit den erwarteten Werten übereinstimmen.

    Feldwerte werden case-sensitiv verglichen.

    "name" und "url"-Felder werden immer gemäß der Richtlinie promisor.acceptFromServer geprüft, unabhängig von dieser Einstellung.

    Die Feldnamen und -werte sollten vom Server über die "promisor-remote"-Fähigkeit mittels der Konfigurationsvariable promisor.sendFields übergeben werden. Die Felder werden nur geprüft, wenn die Konfigurationsvariable promisor.acceptFromServer nicht auf "None" gesetzt ist. Wenn sie auf "None" gesetzt ist, hat diese Konfigurationsvariable keine Auswirkung. Siehe gitprotocol-v2[5].

protocol.allow

Wenn gesetzt, wird eine benutzerdefinierte Standardrichtlinie für alle Protokolle bereitgestellt, die keine explizite Richtlinie haben (protocol.<name>.allow). Standardmäßig, wenn nicht gesetzt, haben bekannte-sichere Protokolle (http, https, git, ssh) eine Standardrichtlinie von always, bekannte-gefährliche Protokolle (ext) eine Standardrichtlinie von never, und alle anderen Protokolle (einschließlich file) eine Standardrichtlinie von user. Unterstützte Richtlinien

  • always - Protokoll kann immer verwendet werden.

  • never - Protokoll kann nie verwendet werden.

  • user - Protokoll kann nur verwendet werden, wenn GIT_PROTOCOL_FROM_USER entweder nicht gesetzt ist oder den Wert 1 hat. Diese Richtlinie sollte verwendet werden, wenn Sie möchten, dass ein Protokoll direkt vom Benutzer verwendet werden kann, aber nicht von Befehlen, die Klon-/Fetch-/Push-Befehle ohne Benutzereingabe ausführen, z. B. rekursive Submodulinitialisierung.

protocol.<name>.allow

Legt eine Richtlinie fest, die vom Protokoll <name> mit Klon-/Fetch-/Push-Befehlen verwendet wird. Siehe protocol.allow oben für die verfügbaren Richtlinien.

Die von Git derzeit verwendeten Protokollnamen sind:

  • file: jeder dateibasierte lokale Pfad (einschließlich file://-URLs oder lokaler Pfade)

  • git: das anonyme Git-Protokoll über eine direkte TCP-Verbindung (oder Proxy, falls konfiguriert)

  • ssh: Git über SSH (einschließlich host:path-Syntax, ssh://, etc.).

  • http: Git über HTTP, sowohl "smart http" als auch "dumb http". Beachten Sie, dass dies https nicht einschließt; wenn Sie beide konfigurieren möchten, müssen Sie dies einzeln tun.

  • beliebige externe Helfer werden nach ihrem Protokoll benannt (z. B. verwenden Sie hg, um den Helfer git-remote-hg zuzulassen)

protocol.version

Wenn gesetzt, versucht der Client, mit dem Server unter Verwendung der angegebenen Protokollversion zu kommunizieren. Wenn der Server dies nicht unterstützt, wird die Kommunikation auf Version 0 zurückfallen. Wenn nicht gesetzt, ist der Standardwert 2. Unterstützte Versionen

  • 0 - das ursprüngliche Wire-Protokoll.

  • 1 - das ursprüngliche Wire-Protokoll mit der Hinzufügung einer Versionszeichenfolge in der anfänglichen Antwort des Servers.

  • 2 - Wire-Protokoll Version 2, siehe gitprotocol-v2[5].

pull.ff

Standardmäßig erstellt Git keinen zusätzlichen Merge-Commit, wenn ein Commit gemergt wird, der ein Nachfahre des aktuellen Commits ist. Stattdessen wird die Spitze des aktuellen Branches "fast-forwarded". Wenn auf false gesetzt, weist diese Variable Git an, in einem solchen Fall einen zusätzlichen Merge-Commit zu erstellen (entspricht der Angabe der Option --no-ff auf der Kommandozeile). Wenn auf only gesetzt, sind nur solche Fast-Forward-Merges erlaubt (entspricht der Angabe der Option --ff-only auf der Kommandozeile). Diese Einstellung überschreibt merge.ff beim Ziehen.

pull.rebase

Wenn true, werden die Branches auf den abgerufenen Branch gerebased, anstatt den Standardbranch vom Standard-Remote zu mergen, wenn "git pull" ausgeführt wird. Siehe "branch.<name>.rebase" zum Setzen auf Pro-Branch-Basis.

Wenn merges (oder nur m), wird die Option --rebase-merges an git rebase übergeben, damit die lokalen Merge-Commits in den Rebase einbezogen werden (siehe git-rebase[1] für Details).

Wenn der Wert interactive (oder nur i) ist, wird der Rebase im interaktiven Modus ausgeführt.

HINWEIS: Dies ist eine potenziell gefährliche Operation; verwenden Sie sie nicht, es sei denn, Sie verstehen die Auswirkungen (siehe git-rebase[1] für Details).

pull.octopus

Die standardmäßige Merge-Strategie, die verwendet wird, wenn mehrere Branches auf einmal gezogen werden.

pull.autoStash

Wenn auf true gesetzt, wird automatisch ein temporärer Stash-Eintrag erstellt, um die lokalen Änderungen vor Beginn der Operation zu speichern und sie nach Abschluss der Operation wiederherzustellen. Wenn Ihr "git pull" rebased (anstatt zu mergen), kann dies praktisch sein, da Rebase-Pull im Gegensatz zu Merge-Pull nicht mit lokalen Änderungen funktioniert, während Merge-Pull lokale Änderungen toleriert, die den Merge nicht stören.

Wenn pull.autostash gesetzt ist (entweder auf true oder false), werden merge.autostash und rebase.autostash ignoriert. Wenn pull.autostash gar nicht gesetzt ist, wird je nach Wert von pull.rebase stattdessen merge.autostash oder rebase.autostash verwendet. Kann durch die Kommandozeilenoption --[no-]autostash überschrieben werden.

pull.twohead

Die standardmäßige Merge-Strategie, die verwendet wird, wenn ein einzelner Branch gezogen wird.

push.autoSetupRemote

Wenn auf "true" gesetzt, wird beim Standard-Push, wenn für den aktuellen Branch kein Upstream-Tracking vorhanden ist, --set-upstream angenommen; diese Option wird mit den push.default-Optionen simple, upstream und current wirksam. Sie ist nützlich, wenn Sie standardmäßig möchten, dass neue Branches zum Standard-Remote gepusht werden (ähnlich dem Verhalten von push.default=current) und Sie auch möchten, dass das Upstream-Tracking gesetzt wird. Workflows, die wahrscheinlich am meisten von dieser Option profitieren, sind simple zentrale Workflows, bei denen erwartet wird, dass alle Branches denselben Namen auf dem Remote haben.

push.default

Definiert die Aktion, die git push ausführen soll, wenn keine Refspec angegeben ist (weder über die Kommandozeile, Konfiguration noch anderswo). Verschiedene Werte sind für spezifische Workflows gut geeignet; zum Beispiel ist in einem rein zentralen Workflow (d. h. die Fetch-Quelle ist gleich dem Push-Ziel) upstream wahrscheinlich das, was Sie wollen. Mögliche Werte sind

  • nothing - nichts pushen (Fehler ausgeben), es sei denn, eine Refspec ist angegeben. Dies ist hauptsächlich für Leute gedacht, die Fehler vermeiden wollen, indem sie immer explizit sind.

  • current - den aktuellen Branch pushen, um einen Branch mit demselben Namen am anderen Ende zu aktualisieren. Funktioniert sowohl in zentralen als auch in nicht-zentralen Workflows.

  • upstream - den aktuellen Branch zurück an den Branch pushen, dessen Änderungen normalerweise in den aktuellen Branch integriert werden (der als @{upstream} bezeichnet wird). Dieser Modus ist nur sinnvoll, wenn Sie zum selben Repository pushen, von dem Sie normalerweise ziehen (d. h. zentraler Workflow).

  • tracking - Dies ist ein veraltetes Synonym für upstream.

  • simple - den aktuellen Branch mit demselben Namen am Remote pushen.

    Wenn Sie in einem zentralisierten Workflow arbeiten (Push zum selben Repository, von dem Sie ziehen, normalerweise origin), müssen Sie einen Upstream-Branch mit demselben Namen konfigurieren.

    Dieser Modus ist seit Git 2.0 der Standard und die sicherste Option für Anfänger.

  • matching - alle Branches pushen, die an beiden Enden denselben Namen haben. Dies bewirkt, dass sich das Repository, in das Sie pushen, die Menge der zu pushenden Branches merkt (z. B. wenn Sie dort immer maint und master pushen und keine anderen Branches, hat das Repository, in das Sie pushen, diese beiden Branches, und Ihre lokalen maint und master werden dorthin gepusht).

    Um diesen Modus effektiv zu nutzen, müssen Sie sicherstellen, dass *alle* Branches, die Sie pushen möchten, zum Pushen bereit sind, bevor Sie git push ausführen, da der ganze Sinn dieses Modus darin besteht, Ihnen zu ermöglichen, alle Branches auf einmal zu pushen. Wenn Sie normalerweise nur an einem Branch arbeiten und das Ergebnis pushen, während andere Branches unvollendet sind, ist dieser Modus nichts für Sie. Auch ist dieser Modus nicht geeignet, um in ein gemeinsames zentrales Repository zu pushen, da andere Personen dort neue Branches hinzufügen oder die Spitze bestehender Branches außerhalb Ihrer Kontrolle aktualisieren können.

    Dies war früher der Standard, aber nicht mehr seit Git 2.0 (simple ist der neue Standard).

push.followTags

Wenn auf true gesetzt, wird die Option --follow-tags standardmäßig aktiviert. Sie können diese Konfiguration zum Zeitpunkt des Pushs überschreiben, indem Sie --no-follow-tags angeben.

push.gpgSign

Kann auf einen Booleschen Wert oder die Zeichenfolge if-asked gesetzt werden. Ein wahrer Wert bewirkt, dass alle Pushes GPG-signiert werden, als ob --signed an git-push[1] übergeben würde. Die Zeichenfolge if-asked bewirkt, dass Pushes signiert werden, wenn der Server dies unterstützt, als ob --signed=if-asked an git push übergeben würde. Ein expliziter Wert false kann einen Wert aus einer Konfigurationsdatei mit niedrigerer Priorität überschreiben. Ein explizites Flag auf der Kommandozeile überschreibt diese Konfigurationsoption immer.

push.pushOption

Wenn kein Argument --push-option=<option> von der Kommandozeile gegeben wird, verhält sich git push so, als ob jeder <value> dieser Variablen als --push-option=<value> gegeben würde.

Dies ist eine mehrwertige Variable, und ein leerer Wert kann in einer Konfigurationsdatei mit höherer Priorität (z. B. .git/config in einem Repository) verwendet werden, um Werte zu löschen, die von Konfigurationsdateien mit niedrigerer Priorität (z. B. $HOME/.gitconfig) geerbt wurden.

Example:

/etc/gitconfig
  push.pushoption = a
  push.pushoption = b

~/.gitconfig
  push.pushoption = c

repo/.git/config
  push.pushoption =
  push.pushoption = b

This will result in only b (a and c are cleared).
push.recurseSubmodules

Kann "check", "on-demand", "only" oder "no" sein, mit demselben Verhalten wie bei "push --recurse-submodules". Wenn nicht gesetzt, wird standardmäßig no verwendet, es sei denn, submodule.recurse ist gesetzt (in diesem Fall bedeutet ein true-Wert on-demand).

push.useForceIfIncludes

Wenn auf "true" gesetzt, ist dies äquivalent zur Angabe von --force-if-includes als Option für git-push[1] auf der Kommandozeile. Das Hinzufügen von --no-force-if-includes zum Zeitpunkt des Pushs überschreibt diese Konfigurationseinstellung.

push.negotiate

Wenn auf "true" gesetzt, wird versucht, die Größe der gesendeten Packdatei durch Verhandlungsrunden zu reduzieren, bei denen Client und Server versuchen, gemeinsame Commits zu finden. Wenn "false", verlässt sich Git ausschließlich auf die Ref-Anzeige des Servers, um gemeinsame Commits zu finden.

push.useBitmaps

Wenn auf "false" gesetzt, wird die Verwendung von Bitmaps für "git push" deaktiviert, auch wenn pack.useBitmaps "true" ist, ohne andere Git-Operationen daran zu hindern, Bitmaps zu verwenden. Standard ist true.

rebase.backend

Standard-Backend für das Rebasen. Mögliche Optionen sind apply oder merge. In Zukunft, wenn das Merge-Backend alle verbleibenden Fähigkeiten des Apply-Backends erhält, kann diese Einstellung ungenutzt bleiben.

rebase.stat

Ob eine Diffstat der Änderungen angezeigt werden soll, die seit dem letzten Rebase upstream stattgefunden haben. Standardmäßig false.

rebase.autoSquash

Wenn auf true gesetzt, wird die Option --autosquash von git-rebase[1] standardmäßig für den interaktiven Modus aktiviert. Dies kann mit der Option --no-autosquash überschrieben werden.

rebase.autoStash

Wenn auf true gesetzt, wird automatisch ein temporärer Stash-Eintrag erstellt, bevor die Operation beginnt, und nach Abschluss der Operation angewendet. Das bedeutet, dass Sie einen Rebase auf einem schmutzigen Arbeitsbaum ausführen können. Verwenden Sie dies jedoch mit Vorsicht: die endgültige Anwendung des Stashes nach einem erfolgreichen Rebase kann zu nicht trivialen Konflikten führen. Diese Option kann durch die Optionen --no-autostash und --autostash von git-rebase[1] überschrieben werden. Standard ist false.

rebase.updateRefs

Wenn auf true gesetzt, wird die Option --update-refs standardmäßig aktiviert.

rebase.missingCommitsCheck

Wenn auf "warn" gesetzt, wird git rebase -i eine Warnung ausgeben, wenn einige Commits entfernt werden (z. B. eine Zeile gelöscht wurde), jedoch wird der Rebase fortgesetzt. Wenn auf "error" gesetzt, wird die vorherige Warnung ausgegeben und der Rebase gestoppt. git rebase --edit-todo kann dann verwendet werden, um den Fehler zu korrigieren. Wenn auf "ignore" gesetzt, wird keine Prüfung durchgeführt. Um einen Commit ohne Warnung oder Fehler zu löschen, verwenden Sie den Befehl drop in der Todo-Liste. Standard ist "ignore".

rebase.instructionFormat

Eine Formatzeichenfolge, wie in git-log[1] angegeben, die für die Todo-Liste während eines interaktiven Rebase verwendet wird. Das Format wird automatisch um den Commit-Hash als Präfix ergänzt.

rebase.abbreviateCommands

Wenn auf true gesetzt, verwendet git rebase abgekürzte Befehlsnamen in der Todo-Liste, was zu etwas wie diesem führt

	p deadbee The oneline of the commit
	p fa1afe1 The oneline of the next commit
	...

anstelle von

	pick deadbee The oneline of the commit
	pick fa1afe1 The oneline of the next commit
	...

Standard ist false.

rebase.rescheduleFailedExec

Zeitpläne für fehlgeschlagene exec-Befehle automatisch neu. Dies ist nur im interaktiven Modus sinnvoll (oder wenn eine Option --exec angegeben wurde). Dies ist dasselbe wie die Angabe der Option --reschedule-failed-exec.

rebase.forkPoint

Wenn auf false gesetzt, wird die Option --no-fork-point standardmäßig gesetzt.

rebase.rebaseMerges

Ob und wie die Option --rebase-merges standardmäßig gesetzt wird. Kann rebase-cousins, no-rebase-cousins oder ein Boolescher Wert sein. Wenn auf true oder no-rebase-cousins gesetzt, ist dies äquivalent zu --rebase-merges=no-rebase-cousins, wenn auf rebase-cousins gesetzt, ist dies äquivalent zu --rebase-merges=rebase-cousins, und wenn auf false gesetzt, ist dies äquivalent zu --no-rebase-merges. Das Übergeben von --rebase-merges auf der Kommandozeile, mit oder ohne Argument, überschreibt jede rebase.rebaseMerges-Konfiguration.

rebase.maxLabelLength

Beim Generieren von Labelnamen aus Commit-Betreffzeilen werden die Namen auf diese Länge gekürzt. Standardmäßig werden die Namen auf etwas weniger als NAME_MAX gekürzt (um z. B. das Schreiben von .lock-Dateien für die entsprechenden losen Referenzen zu ermöglichen).

receive.advertiseAtomic

Standardmäßig kündigt git-receive-pack die Fähigkeit "atomic push" seinen Clients an. Wenn Sie diese Fähigkeit nicht ankündigen möchten, setzen Sie diese Variable auf false.

receive.advertisePushOptions

Wenn auf true gesetzt, kündigt git-receive-pack die Fähigkeit "push options" seinen Clients an. Standard ist false.

receive.autogc

Standardmäßig wird "git maintenance run --auto" nach dem Empfang von Daten von git-push und der Aktualisierung von Refs ausgeführt. Sie können dies stoppen, indem Sie diese Variable auf false setzen.

receive.certNonceSeed

Durch Setzen dieser Variable auf eine Zeichenfolge akzeptiert git receive-pack einen git push --signed und verifiziert ihn mithilfe eines "Nonce", das durch HMAC mit dieser Zeichenfolge als geheimem Schlüssel geschützt ist.

receive.certNonceSlop

Wenn ein git push --signed ein Push-Zertifikat mit einem "Nonce" sendet, das von einem Receive-Pack, das dasselbe Repository bedient, innerhalb dieser vielen Sekunden ausgestellt wurde, wird der in das Zertifikat gefundene "Nonce" nach GIT_PUSH_CERT_NONCE an die Hooks exportiert (anstelle dessen, was das Receive-Pack die sendende Seite aufforderte einzuschließen). Dies kann das Schreiben von Überprüfungen in pre-receive und post-receive etwas erleichtern. Anstatt die Umgebungsvariable GIT_PUSH_CERT_NONCE_SLOP zu prüfen, die aufzeichnet, um wie viele Sekunden der Nonce veraltet ist, um zu entscheiden, ob sie das Zertifikat akzeptieren wollen, können sie nur GIT_PUSH_CERT_NONCE_STATUS als OK prüfen.

receive.fsckObjects

Wenn auf true gesetzt, prüft git-receive-pack alle empfangenen Objekte. Siehe transfer.fsckObjects für Details, was geprüft wird. Standard ist false. Wenn nicht gesetzt, wird stattdessen der Wert von transfer.fsckObjects verwendet.

receive.fsck.<msg-id>

Verhält sich wie fsck.<msg-id>, wird aber von git-receive-pack[1] anstelle von git-fsck[1] verwendet. Siehe die Dokumentation zu fsck.<msg-id> für Details.

receive.fsck.skipList

Verhält sich wie fsck.skipList, wird aber von git-receive-pack[1] anstelle von git-fsck[1] verwendet. Siehe die Dokumentation zu fsck.skipList für Details.

receive.keepAlive

Nach dem Empfang des Packs vom Client gibt receive-pack während der Verarbeitung des Packs möglicherweise keine Ausgabe aus (wenn --quiet angegeben wurde), was dazu führen kann, dass einige Netzwerke die TCP-Verbindung trennen. Mit dieser Option, wenn receive-pack in dieser Phase keine Daten für receive.keepAlive Sekunden sendet, sendet es ein kurzes Keepalive-Paket. Der Standardwert ist 5 Sekunden; setzen Sie ihn auf 0, um Keepalives vollständig zu deaktivieren.

receive.unpackLimit

Wenn die Anzahl der in einem Push empfangenen Objekte unter diesem Limit liegt, werden die Objekte in lose Objektdateien entpackt. Wenn die Anzahl der empfangenen Objekte dieses Limit erreicht oder überschreitet, wird das empfangene Pack als Pack gespeichert, nachdem fehlende Delta-Basen hinzugefügt wurden. Das Speichern des Packs von einem Push kann den Push-Vorgang beschleunigen, insbesondere auf langsamen Dateisystemen. Wenn nicht gesetzt, wird stattdessen der Wert von transfer.unpackLimit verwendet.

receive.maxInputSize

Wenn die Größe des eingehenden Pack-Streams größer als dieses Limit ist, schlägt git-receive-pack mit einem Fehler fehl, anstatt die Pack-Datei zu akzeptieren. Wenn nicht gesetzt oder auf 0 gesetzt, ist die Größe unbegrenzt.

receive.denyDeletes

Wenn auf true gesetzt, lehnt git-receive-pack eine Ref-Aktualisierung ab, die die Ref löscht. Verwenden Sie dies, um eine solche Ref-Löschung per Push zu verhindern.

receive.denyDeleteCurrent

Wenn auf true gesetzt, lehnt git-receive-pack eine Ref-Aktualisierung ab, die den aktuell ausgecheckten Branch eines nicht-bare Repositorys löscht.

receive.denyCurrentBranch

Wenn auf true oder "refuse" gesetzt, lehnt git-receive-pack eine Ref-Aktualisierung auf den aktuell ausgecheckten Branch eines nicht-bare Repositorys ab. Ein solcher Push ist potenziell gefährlich, da er den HEAD mit dem Index und dem Arbeitsbaum in einen unsynchronisierten Zustand bringt. Wenn auf "warn" gesetzt, wird eine Warnung über einen solchen Push nach stderr ausgegeben, aber der Push wird zugelassen. Wenn auf false oder "ignore" gesetzt, werden solche Pushes ohne Nachricht zugelassen. Standard ist "refuse".

Eine weitere Option ist "updateInstead", die den Arbeitsbaum aktualisiert, wenn in den aktuellen Branch gepusht wird. Diese Option ist dazu gedacht, Arbeitsverzeichnisse zu synchronisieren, wenn eine Seite nicht leicht über interaktives ssh zugänglich ist (z. B. eine Live-Website, daher die Anforderung, dass das Arbeitsverzeichnis sauber ist). Dieser Modus ist auch nützlich, wenn Sie innerhalb einer VM entwickeln, um Code auf verschiedenen Betriebssystemen zu testen und zu beheben.

Standardmäßig lehnt "updateInstead" den Push ab, wenn der Arbeitsbaum oder der Index Unterschiede zum HEAD aufweisen, aber der push-to-checkout Hook kann verwendet werden, um dies anzupassen. Siehe githooks[5].

receive.denyNonFastForwards

Wenn auf true gesetzt, lehnt git-receive-pack eine Ref-Aktualisierung ab, die kein Fast-Forward ist. Verwenden Sie dies, um eine solche Aktualisierung per Push zu verhindern, selbst wenn der Push erzwungen wird. Diese Konfigurationsvariable wird bei der Initialisierung eines geteilten Repositorys gesetzt.

receive.hideRefs

Diese Variable ist dieselbe wie transfer.hideRefs, gilt aber nur für receive-pack (und betrifft daher Pushes, aber keine Fetches). Ein Versuch, eine versteckte Ref von git push zu aktualisieren oder zu löschen, wird abgelehnt.

receive.procReceiveRefs

Dies ist eine mehrwertige Variable, die Referenzpräfixe definiert, die mit den Befehlen in receive-pack übereinstimmen. Befehle, die mit den Präfixen übereinstimmen, werden von einem externen Hook "proc-receive" ausgeführt, anstatt von der internen Funktion execute_commands. Wenn diese Variable nicht definiert ist, wird der Hook "proc-receive" niemals verwendet, und alle Befehle werden von der internen Funktion execute_commands ausgeführt.

Wenn diese Variable beispielsweise auf "refs/for" gesetzt ist, erstellt oder aktualisiert ein Push zu einer Referenz wie "refs/for/master" keine Referenz namens "refs/for/master", kann aber direkt einen Pull-Request erstellen oder aktualisieren, indem der Hook "proc-receive" ausgeführt wird.

Optionale Modifikatoren können am Anfang des Werts angegeben werden, um Befehle für bestimmte Aktionen zu filtern: Erstellen (a), Ändern (m), Löschen (d). Ein ! kann in den Modifikatoren enthalten sein, um den Referenzpräfix-Eintrag zu negieren. Z.B.

git config --system --add receive.procReceiveRefs ad:refs/heads
git config --system --add receive.procReceiveRefs !:refs/heads
receive.updateServerInfo

Wenn auf true gesetzt, führt git-receive-pack git-update-server-info aus, nachdem Daten von git-push empfangen und Refs aktualisiert wurden.

receive.shallowUpdate

Wenn auf true gesetzt, kann .git/shallow aktualisiert werden, wenn neue Refs neue flache Wurzeln erfordern. Andernfalls werden diese Refs abgelehnt.

reftable.blockSize

Die Größe in Bytes, die das Reftable-Backend beim Schreiben von Blöcken verwendet. Die Blockgröße wird vom Schreiber bestimmt und muss keine Zweierpotenz sein. Die Blockgröße muss länger als der längste Referenzname oder der längste Logeintrag im Repository sein, da Referenzen Blöcke nicht überspannen dürfen.

Es werden Zweierpotenzen empfohlen, die für das virtuelle Speichersystem oder das Dateisystem günstig sind (wie 4 kB oder 8 kB). Größere Größen (64 kB) können eine bessere Komprimierung erzielen, mit möglicherweise erhöhten Kosten für Leser beim Zugriff.

Die größte Blockgröße beträgt 16777215 Bytes (15,99 MiB). Der Standardwert beträgt 4096 Bytes (4 kB). Ein Wert von 0 verwendet den Standardwert.

reftable.restartInterval

Das Intervall, in dem Restart-Punkte erstellt werden. Das Reftable-Backend bestimmt die Restart-Punkte bei Dateierstellung. Alle 16 sind möglicherweise besser für kleinere Blockgrößen (4k oder 8k) geeignet, alle 64 für größere Blockgrößen (64k).

Häufigere Restart-Punkte reduzieren die Präfixkomprimierung und erhöhen den Speicherverbrauch der Restart-Tabelle, was beides die Dateigröße erhöht.

Weniger häufige Restart-Punkte machen die Präfixkomprimierung effektiver und reduzieren die Gesamtdateigröße, was zu erhöhten Strafen für Leser führt, die nach dem Binärsuchschritt mehr Datensätze durchlaufen müssen.

Maximal 65535 Restart-Punkte pro Block werden unterstützt.

Der Standardwert ist, alle 16 Datensätze Restart-Punkte zu erstellen. Ein Wert von 0 verwendet den Standardwert.

reftable.indexObjects

Ob das Reftable-Backend Objektblöcke schreiben soll. Objektblöcke sind eine umgekehrte Zuordnung von Objekt-IDs zu den Referenzen, die auf sie verweisen.

Der Standardwert ist true.

reftable.geometricFactor

Immer wenn das Reftable-Backend einen neuen Tisch zum Stapel hinzufügt, führt es eine automatische Komprimierung durch, um sicherzustellen, dass nur eine Handvoll Tische vorhanden sind. Das Backend tut dies, indem es sicherstellt, dass die Tische eine geometrische Folge in Bezug auf die jeweiligen Größen jedes Tisches bilden.

Standardmäßig verwendet die geometrische Folge einen Faktor von 2, was bedeutet, dass für jeden Tisch der nächstgrößere Tisch mindestens doppelt so groß sein muss. Ein maximaler Faktor von 256 wird unterstützt.

reftable.lockTimeout

Immer wenn das Reftable-Backend einen neuen Tisch zum Stapel hinzufügt, muss es die zentrale Datei "tables.list" sperren, bevor es sie aktualisiert. Diese Konfiguration steuert, wie lange der Prozess wartet, um die Sperre zu erlangen, falls ein anderer Prozess sie bereits erworben hat. Ein Wert von 0 bedeutet, gar nicht zu versuchen; -1 bedeutet, unbegrenzt zu versuchen. Standard ist 100 (d.h. 100ms lang versuchen).

remote.pushDefault

Der Remote-Server, zu dem standardmäßig gepusht wird. Überschreibt branch.<name>.remote für alle Branches und wird von branch.<name>.pushRemote für bestimmte Branches überschrieben.

remote.<name>.url

Die URL eines entfernten Repositorys. Siehe git-fetch[1] oder git-push[1]. Ein konfigurierter Remote kann mehrere URLs haben; in diesem Fall wird die erste zum Abrufen verwendet und alle werden zum Pushen verwendet (vorausgesetzt, es ist keine remote.<name>.pushurl definiert). Das Setzen dieses Schlüssels auf eine leere Zeichenkette löscht die Liste der URLs und ermöglicht Ihnen, frühere Konfigurationen zu überschreiben.

remote.<name>.pushurl

Die Push-URL eines entfernten Repositorys. Siehe git-push[1]. Wenn eine pushurl-Option in einem konfigurierten Remote vorhanden ist, wird sie zum Pushen anstelle von remote.<name>.url verwendet. Ein konfigurierter Remote kann mehrere Push-URLs haben; in diesem Fall wird zu allen gepusht. Das Setzen dieses Schlüssels auf eine leere Zeichenkette löscht die Liste der URLs und ermöglicht Ihnen, frühere Konfigurationen zu überschreiben.

remote.<name>.proxy

Für Remotes, die curl erfordern (http, https und ftp), die URL des zu verwendenden Proxys für diesen Remote. Auf eine leere Zeichenkette gesetzt, um die Proxy-Nutzung für diesen Remote zu deaktivieren.

remote.<name>.proxyAuthMethod

Für Remotes, die curl erfordern (http, https und ftp), die Methode zur Authentifizierung gegen den verwendeten Proxy (wahrscheinlich gesetzt in remote.<name>.proxy). Siehe http.proxyAuthMethod.

remote.<name>.fetch

Der Standard-Satz von "Refspec" für git-fetch[1]. Siehe git-fetch[1].

remote.<name>.push

Der Standard-Satz von "Refspec" für git-push[1]. Siehe git-push[1].

remote.<name>.mirror

Wenn true, verhält sich das Pushen zu diesem Remote automatisch so, als ob die Option --mirror auf der Kommandozeile angegeben wurde.

remote.<name>.skipDefaultUpdate

Ein veraltetes Synonym für remote.<name>.skipFetchAll (wenn beide in den Konfigurationsdateien mit unterschiedlichen Werten gesetzt sind, wird der Wert des letzten Vorkommens verwendet).

remote.<name>.skipFetchAll

Wenn true, wird dieser Remote beim Aktualisieren mit git-fetch[1], dem Unterbefehl update von git-remote[1], übersprungen und von der Prefetch-Aufgabe von git maintenance ignoriert.

remote.<name>.receivepack

Das Standardprogramm, das auf der Remote-Seite beim Pushen ausgeführt wird. Siehe Option --receive-pack von git-push[1].

remote.<name>.uploadpack

Das Standardprogramm, das auf der Remote-Seite beim Abrufen ausgeführt wird. Siehe Option --upload-pack von git-fetch-pack[1].

remote.<name>.tagOpt

Das Setzen dieses Werts auf --no-tags deaktiviert die automatische Tag-Verfolgung beim Abrufen von Remote <name>. Das Setzen auf --tags ruft jeden Tag von Remote <name> ab, auch wenn er nicht von Remote-Branch-Heads erreichbar ist. Das Übergeben dieser Flags direkt an git-fetch[1] kann diese Einstellung überschreiben. Siehe Optionen --tags und --no-tags von git-fetch[1].

remote.<name>.vcs

Das Setzen dieses Werts auf einen Wert <vcs> bewirkt, dass Git mit dem Helper git-remote-<vcs> mit dem Remote interagiert.

remote.<name>.prune

Wenn auf true gesetzt, wird das Abrufen von diesem Remote standardmäßig auch alle Remote-Tracking-Referenzen entfernen, die auf dem Remote nicht mehr existieren (als ob die Option --prune auf der Kommandozeile angegeben worden wäre). Überschreibt ggf. die fetch.prune-Einstellungen.

remote.<name>.pruneTags

Wenn auf true gesetzt, werden beim Abrufen von diesem Remote standardmäßig auch alle lokalen Tags entfernt, die auf dem Remote nicht mehr existieren, wenn das Pruning allgemein über remote.<name>.prune, fetch.prune oder --prune aktiviert ist. Überschreibt ggf. die fetch.pruneTags-Einstellungen.

Siehe auch remote.<name>.prune und den Abschnitt PRUNING in git-fetch[1].

remote.<name>.promisor

Wenn auf true gesetzt, wird dieser Remote zum Abrufen von Promisor-Objekten verwendet.

remote.<name>.partialclonefilter

Der Filter, der beim Abrufen von diesem Promisor-Remote angewendet wird. Das Ändern oder Löschen dieses Werts wirkt sich nur auf Abrufe neuer Commits aus. Um zugehörige Objekte für bereits im lokalen Objekt-Repository vorhandene Commits abzurufen, verwenden Sie die Option --refetch von git-fetch[1].

remote.<name>.serverOption

Der Standard-Satz von Serveroptionen, die beim Abrufen von diesem Remote verwendet werden. Diese Serveroptionen können durch die Kommandozeilenargumente --server-option= überschrieben werden.

Dies ist eine mehrwertige Variable, und ein leerer Wert kann in einer Konfigurationsdatei mit höherer Priorität (z. B. .git/config in einem Repository) verwendet werden, um Werte zu löschen, die von Konfigurationsdateien mit niedrigerer Priorität (z. B. $HOME/.gitconfig) geerbt wurden.

remote.<name>.followRemoteHEAD

Wie git-fetch[1] mit Aktualisierungen von remotes/<name>/HEAD umgehen soll, wenn mit den konfigurierten Refspecs eines Remotes abgerufen wird. Der Standardwert ist "create", der remotes/<name>/HEAD erstellt, wenn er auf dem Remote existiert, aber nicht lokal; dies berührt keine bereits vorhandene lokale Referenz. Wenn es auf "warn" gesetzt ist, wird eine Meldung ausgegeben, wenn der Remote einen anderen Wert als der lokale hat; wenn keine lokale Referenz vorhanden ist, verhält es sich wie "create". Eine Variante von "warn" ist "warn-if-not-$branch", die sich wie "warn" verhält, aber wenn HEAD auf dem Remote $branch ist, wird sie stillschweigend durchgeführt. Wenn es auf "always" gesetzt ist, wird remotes/<name>/HEAD stillschweigend auf den Wert auf dem Remote aktualisiert. Schließlich wird es, wenn es auf "never" gesetzt ist, niemals die lokale Referenz ändern oder erstellen.

remotes.<group>

Die Liste der Remotes, die von "git remote update <group>" abgerufen werden. Siehe git-remote[1].

repack.useDeltaBaseOffset

Standardmäßig erstellt git-repack[1] Packs, die Delta-Basis-Offsets verwenden. Wenn Sie Ihr Repository mit Git älter als Version 1.4.4 teilen müssen, entweder direkt oder über ein Dumb-Protokoll wie HTTP, dann müssen Sie diese Option auf "false" setzen und neu verpacken. Der Zugriff von alten Git-Versionen über das native Protokoll wird von dieser Option nicht beeinflusst.

repack.packKeptObjects

Wenn auf true gesetzt, verhält sich git repack so, als ob --pack-kept-objects übergeben wurde. Siehe git-repack[1] für Details. Standard ist normalerweise false, aber true, wenn ein Bitmap-Index geschrieben wird (entweder über --write-bitmap-index oder repack.writeBitmaps).

repack.useDeltaIslands

Wenn auf true gesetzt, verhält sich git repack so, als ob --delta-islands übergeben wurde. Standard ist false.

repack.writeBitmaps

Wenn true, schreibt Git einen Bitmap-Index, wenn alle Objekte auf die Festplatte gepackt werden (z.B. wenn git repack -a ausgeführt wird). Dieser Index kann die Phase "Objekte zählen" für nachfolgende Packs, die für Klone und Fetches erstellt werden, beschleunigen, auf Kosten von etwas Speicherplatz und zusätzlicher Zeit für das anfängliche Neuverpacken. Dies hat keine Auswirkung, wenn mehrere Packdateien erstellt werden. Standard ist true bei bare Repositories, sonst false.

repack.updateServerInfo

Wenn auf false gesetzt, führt git-repack[1] git-update-server-info[1] nicht aus. Standard ist true. Kann überschrieben werden, wenn true, durch die Option -n von git-repack[1].

repack.cruftWindow
repack.cruftWindowMemory
repack.cruftDepth
repack.cruftThreads

Parameter, die von git-pack-objects[1] bei der Erzeugung eines Cruft-Packs verwendet werden und die entsprechenden Parameter nicht über die Kommandozeile übergeben werden. Siehe ähnlich benannte pack.*-Konfigurationsvariablen für Standardwerte und Bedeutung.

repack.midxMustContainCruft

Wenn true gesetzt, schließt git-repack[1] bedingungslos Cruft-Packs ein, falls vorhanden, in den Multi-Pack-Index, wenn es mit --write-midx aufgerufen wird. Wenn false, werden Cruft-Packs nur in den MIDX aufgenommen, wenn nötig (z.B. weil sie erforderlich sein könnten, um mit MIDX-Bitmaps eine Erreichbarkeitschlussbildung zu bilden). Standard ist true.

rerere.autoUpdate

Wenn auf true gesetzt, aktualisiert git-rerere den Index mit den resultierenden Inhalten, nachdem es Konflikte mit zuvor aufgezeichneten Auflösungen erfolgreich behoben hat. Standard ist false.

rerere.enabled

Aktiviert die Aufzeichnung von gelösten Konflikten, damit identische Konflikt-Hunks erneut automatisch aufgelöst werden können, falls sie wieder auftreten. Standardmäßig ist git-rerere[1] aktiviert, wenn ein rr-cache-Verzeichnis unter $GIT_DIR vorhanden ist, z.B. wenn "rerere" zuvor im Repository verwendet wurde.

revert.reference

Das Setzen dieser Variablen auf true lässt git revert so verhalten, als ob die Option --reference angegeben wurde.

safe.bareRepository

Gibt an, mit welchen Bare-Repositories Git arbeiten wird. Die derzeit unterstützten Werte sind

  • all: Git arbeitet mit allen Bare-Repositories. Dies ist der Standard.

  • explicit: Git arbeitet nur mit Bare-Repositories, die über die Top-Level --git-dir Kommandozeilenoption oder die GIT_DIR Umgebungsvariable angegeben wurden (siehe git[1]).

    Wenn Sie in Ihrem Workflow keine Bare-Repositories verwenden, kann es vorteilhaft sein, safe.bareRepository in Ihrer globalen Konfiguration auf explicit zu setzen. Dies schützt Sie vor Angriffen, die das Klonen eines Repositorys beinhalten, das ein Bare-Repository enthält, und das Ausführen eines Git-Befehls in diesem Verzeichnis.

    Diese Konfigurationseinstellung wird nur in geschützter Konfiguration berücksichtigt (siehe SCOPES). Dies verhindert, dass nicht vertrauenswürdige Repositories diesen Wert manipulieren.

safe.directory

Diese Konfigurationseinträge geben Git-getrackte Verzeichnisse an, die als sicher gelten, auch wenn sie jemand anderem als dem aktuellen Benutzer gehören. Standardmäßig weigert sich Git, die Git-Konfiguration eines Repositorys, das jemand anderem gehört, überhaupt zu parsen, geschweige denn seine Hooks auszuführen. Diese Konfigurationseinstellung ermöglicht es Benutzern, Ausnahmen anzugeben, z.B. für absichtlich geteilte Repositories (siehe die --shared-Option in git-init[1]).

Dies ist eine mehrwertige Einstellung, d.h. Sie können weitere Verzeichnisse über git config --add hinzufügen. Um die Liste der sicheren Verzeichnisse zurückzusetzen (z.B. um solche Verzeichnisse zu überschreiben, die in der Systemkonfiguration angegeben sind), fügen Sie einen safe.directory-Eintrag mit einem leeren Wert hinzu.

Diese Konfigurationseinstellung wird nur in geschützter Konfiguration berücksichtigt (siehe SCOPES). Dies verhindert, dass nicht vertrauenswürdige Repositories diesen Wert manipulieren.

Der Wert dieser Einstellung wird interpoliert, d.h. ~/<path> wird zu einem Pfad relativ zum Home-Verzeichnis erweitert und %(prefix)/<path> wird zu einem Pfad relativ zum (Laufzeit-)Präfix von Git erweitert.

Um diese Sicherheitsprüfung vollständig zu umgehen, setzen Sie safe.directory auf die Zeichenkette *. Dies erlaubt, dass alle Repositories so behandelt werden, als wäre ihr Verzeichnis in der Liste safe.directory aufgeführt. Wenn safe.directory=* in der Systemkonfiguration gesetzt ist und Sie diesen Schutz wieder aktivieren möchten, initialisieren Sie Ihre Liste mit einem leeren Wert, bevor Sie die Repositories auflisten, die Sie als sicher erachten. Die Angabe eines Verzeichnisses mit angehängtem /* erlaubt den Zugriff auf alle Repositories unter dem angegebenen Verzeichnis.

Wie erläutert, erlaubt Git standardmäßig nur den Zugriff auf Repositories, die Ihnen selbst gehören, d.h. dem Benutzer, der Git ausführt. Wenn Git jedoch unter root auf einer nicht-Windows-Plattform mit sudo ausgeführt wird, prüft Git die Umgebungsvariable SUDO_UID, die von sudo erstellt wird, und erlaubt zusätzlich zur ID von root auch den Zugriff auf die dort gespeicherte UID. Dies soll eine häufige Abfolge während der Installation erleichtern: "make && sudo make install". Ein Git-Prozess, der unter sudo läuft, wird als root ausgeführt, aber der sudo-Befehl exportiert die Umgebungsvariable, um die ID des ursprünglichen Benutzers zu speichern. Wenn Sie dies nicht wünschen und möchten, dass Git nur Repositories vertraut, die root gehören, können Sie die Variable SUDO_UID aus der Umgebung von root entfernen, bevor Sie git aufrufen.

sendemail.identity

Eine Konfigurationsidentität. Wenn angegeben, werden Werte im Abschnitt sendemail.<identity> vor Werten im Abschnitt sendemail bevorzugt. Die Standardidentität ist der Wert von sendemail.identity.

sendemail.smtpEncryption

Siehe git-send-email[1] für die Beschreibung. Beachten Sie, dass diese Einstellung nicht dem identity-Mechanismus unterliegt.

sendemail.smtpSSLCertPath

Pfad zu CA-Zertifikaten (entweder ein Verzeichnis oder eine einzelne Datei). Setzen Sie ihn auf eine leere Zeichenkette, um die Zertifikatüberprüfung zu deaktivieren.

sendemail.<identity>.*

Identitätsspezifische Versionen der unten aufgeführten sendemail.* Parameter, die diese überschreiben, wenn diese Identität ausgewählt wird, entweder über die Kommandozeile oder sendemail.identity.

sendemail.multiEdit

Wenn true (Standard), wird eine einzige Editor-Instanz gestartet, um Dateien zu bearbeiten, die Sie bearbeiten müssen (Patches bei Verwendung von --annotate und die Zusammenfassung bei Verwendung von --compose). Wenn false, werden Dateien nacheinander bearbeitet, wobei jedes Mal ein neuer Editor gestartet wird.

sendemail.confirm

Legt den Standardwert für die Bestätigung vor dem Senden fest. Muss einer der Werte always, never, cc, compose oder auto sein. Siehe --confirm in der Dokumentation zu git-send-email[1] für die Bedeutung dieser Werte.

sendemail.mailmap

Wenn true, geht git-send-email[1] davon aus, dass --mailmap verwendet wird, andernfalls wird --no-mailmap angenommen. Standard ist false.

sendemail.mailmap.file

Der Speicherort einer git-send-email[1]-spezifischen ergänzenden Mailmap-Datei. Die Standard-Mailmap und mailmap.file werden zuerst geladen. Einträge in dieser Datei haben daher Vorrang vor Einträgen an den Standard-Mailmap-Speicherorten. Siehe gitmailmap[5].

sendemail.mailmap.blob

Ähnlich wie sendemail.mailmap.file, aber der Wert wird als Referenz auf ein Blob im Repository betrachtet. Einträge in sendemail.mailmap.file haben Vorrang vor Einträgen hier. Siehe gitmailmap[5].

sendemail.aliasesFile

Um die Eingabe langer E-Mail-Adressen zu vermeiden, verweisen Sie hier auf eine oder mehrere E-Mail-Aliasdateien. Sie müssen auch sendemail.aliasFileType angeben.

sendemail.aliasFileType

Format der in sendemail.aliasesFile angegebenen Datei(en). Muss einer der folgenden Werte sein: mutt, mailrc, pine, elm, gnus oder sendmail.

Wie eine Aliasdatei in jedem Format aussieht, kann in der Dokumentation des E-Mail-Programms mit demselben Namen gefunden werden. Die Unterschiede und Einschränkungen gegenüber den Standardformaten sind unten beschrieben.

sendmail
  • Anführungszeichen-Aliase und Anführungszeichen-Adressen werden nicht unterstützt: Zeilen, die ein "-Symbol enthalten, werden ignoriert.

  • Weiterleitung an eine Datei (/path/name) oder an eine Pipe (|command) wird nicht unterstützt.

  • Dateien einbinden (:include: /path/name) wird nicht unterstützt.

  • Warnungen werden auf der Standardfehlerausgabe für explizit nicht unterstützte Konstrukte ausgegeben, sowie für jede andere Zeile, die vom Parser nicht erkannt wird.

sendemail.annotate
sendemail.bcc
sendemail.cc
sendemail.ccCmd
sendemail.chainReplyTo
sendemail.envelopeSender
sendemail.from
sendemail.headerCmd
sendemail.signedOffByCc
sendemail.smtpPass
sendemail.suppressCc
sendemail.suppressFrom
sendemail.to
sendemail.toCmd
sendemail.smtpDomain
sendemail.smtpServer
sendemail.smtpServerPort
sendemail.smtpServerOption
sendemail.smtpUser
sendemail.imapSentFolder
sendemail.useImapOnly
sendemail.thread
sendemail.transferEncoding
sendemail.validate
sendemail.xmailer

Diese Konfigurationsvariablen bieten alle einen Standardwert für die Kommandozeilenoptionen von git-send-email[1]. Siehe dessen Dokumentation für Details.

sendemail.outlookidfix

Wenn true, geht git-send-email[1] davon aus, dass --outlook-id-fix verwendet wird, und wenn false, geht es davon aus, dass --no-outlook-id-fix verwendet wird. Wenn nicht angegeben, verhält es sich so, als ob --outlook-id-fix nicht angegeben wurde.

sendemail.signedOffCc (deprecated)

Veraltetes Alias für sendemail.signedOffByCc.

sendemail.smtpBatchSize

Anzahl der pro Verbindung zu sendenden Nachrichten, danach erfolgt ein erneutes Einloggen. Wenn der Wert 0 oder undefiniert ist, werden alle Nachrichten in einer Verbindung gesendet. Siehe auch die Option --batch-size von git-send-email[1].

sendemail.smtpReloginDelay

Sekunden Wartezeit vor der Wiederverbindung zum SMTP-Server. Siehe auch die Option --relogin-delay von git-send-email[1].

sendemail.forbidSendmailVariables

Um häufige Fehlkonfigurationen zu vermeiden, bricht git-send-email[1] mit einer Warnung ab, wenn Konfigurationsoptionen für sendmail vorhanden sind. Setzen Sie diese Variable, um die Prüfung zu umgehen.

sequence.editor

Texteditor, der von git rebase -i zum Bearbeiten der Rebase-Instruktionsdatei verwendet wird. Der Wert ist so zu interpretieren, dass er von der Shell verwendet wird, wenn er aufgerufen wird. Er kann durch die Umgebungsvariable GIT_SEQUENCE_EDITOR überschrieben werden. Wenn nicht konfiguriert, wird stattdessen der Standard-Editor für Commit-Nachrichten verwendet.

showBranch.default

Die Standardmenge an Verzweigungen für git-show-branch[1]. Siehe git-show-branch[1].

sparse.expectFilesOutsideOfPatterns

Typischerweise werden bei Sparse Checkouts Dateien, die keinem Sparsity-Muster entsprechen, mit einem SKIP_WORKTREE-Bit im Index markiert und fehlen im Arbeitsverzeichnis. Dementsprechend prüft Git normalerweise, ob Dateien mit dem SKIP_WORKTREE-Bit tatsächlich im Arbeitsverzeichnis vorhanden sind, entgegen den Erwartungen. Wenn Git welche findet, markiert es diese Pfade als vorhanden, indem es die entsprechenden SKIP_WORKTREE-Bits löscht. Diese Option kann verwendet werden, um Git mitzuteilen, dass solche vorhandenen-trotz-übersprungener-Dateien erwartet werden und Git aufhören soll, danach zu suchen.

Der Standardwert ist false, was es Git ermöglicht, automatisch aus der Liste der Dateien im Index und im Arbeitsverzeichnis, die nicht synchron sind, wiederherzustellen.

Setzen Sie diese Option auf true, wenn Sie sich in einer Konfiguration befinden, in der ein externer Faktor Git von der Verantwortung für die Aufrechterhaltung der Konsistenz zwischen der Anwesenheit von Dateien im Arbeitsverzeichnis und den Sparsity-Mustern entbindet. Wenn Sie beispielsweise ein Git-freundliches virtuelles Dateisystem haben, das einen robusten Mechanismus zur Aktualisierung des Arbeitsverzeichnisses und der Sparsity-Muster basierend auf Zugriffsmustern besitzt.

Unabhängig von dieser Einstellung prüft Git nicht auf vorhandene-trotz-übersprungene-Dateien, es sei denn, Sparse Checkout ist aktiviert. Diese Konfigurationsoption hat also keine Auswirkung, es sei denn, core.sparseCheckout ist true.

splitIndex.maxPercentChange

Wenn die Split-Index-Funktion verwendet wird, gibt dies den Prozentsatz der Einträge an, die der Split-Index im Verhältnis zur Gesamtzahl der Einträge sowohl im Split-Index als auch im gemeinsamen Index enthalten kann, bevor ein neuer gemeinsamer Index geschrieben wird. Der Wert sollte zwischen 0 und 100 liegen. Wenn der Wert 0 ist, wird immer ein neuer gemeinsamer Index geschrieben; wenn er 100 ist, wird nie ein neuer gemeinsamer Index geschrieben. Standardmäßig ist der Wert 20, sodass ein neuer gemeinsamer Index geschrieben wird, wenn die Anzahl der Einträge im Split-Index mehr als 20 Prozent der Gesamtzahl der Einträge betragen würde. Siehe git-update-index[1].

splitIndex.sharedIndexExpire

Wenn die Split-Index-Funktion verwendet wird, werden gemeinsame Indexdateien, die seit dem Zeitpunkt, den diese Variable angibt, nicht mehr geändert wurden, entfernt, wenn eine neue gemeinsame Indexdatei erstellt wird. Der Wert "now" (jetzt) löscht alle Einträge sofort und "never" (nie) unterdrückt die Löschung vollständig. Der Standardwert ist "2.weeks.ago" (vor 2 Wochen). Beachten Sie, dass eine gemeinsame Indexdatei als geändert betrachtet wird (für die Zwecke der Löschung), jedes Mal, wenn eine neue Split-Index-Datei entweder darauf basiert oder von ihr gelesen wird. Siehe git-update-index[1].

ssh.variant

Standardmäßig ermittelt Git die zu verwendenden Kommandozeilenargumente basierend auf dem Basisnamen des konfigurierten SSH-Befehls (konfiguriert über die Umgebungsvariable GIT_SSH oder GIT_SSH_COMMAND oder die Konfigurationseinstellung core.sshCommand). Wenn der Basisname nicht erkannt wird, versucht Git, die Unterstützung von OpenSSH-Optionen zu erkennen, indem es zuerst den konfigurierten SSH-Befehl mit der Option -G (Konfiguration anzeigen) aufruft und anschließend OpenSSH-Optionen (wenn dies erfolgreich ist) oder keine Optionen außer dem Host und dem Remote-Befehl (wenn es fehlschlägt) verwendet.

Die Konfigurationsvariable ssh.variant kann gesetzt werden, um diese Erkennung zu überschreiben. Gültige Werte sind ssh (zum Verwenden von OpenSSH-Optionen), plink, putty, tortoiseplink, simple (keine Optionen außer Host und Remote-Befehl). Die Standard-Autoerkennung kann explizit mit dem Wert auto angefordert werden. Jeder andere Wert wird als ssh behandelt. Diese Einstellung kann auch über die Umgebungsvariable GIT_SSH_VARIANT überschrieben werden.

Die aktuellen Kommandozeilenparameter für jede Variante sind wie folgt:

  • ssh - [-p port] [-4] [-6] [-o option] [username@]host command

  • simple - [username@]host command

  • plink oder putty - [-P port] [-4] [-6] [username@]host command

  • tortoiseplink - [-P port] [-4] [-6] -batch [username@]host command

Mit Ausnahme der simple-Variante werden sich die Kommandozeilenparameter wahrscheinlich ändern, wenn Git neue Funktionen erhält.

stash.index

Wenn dies auf true gesetzt ist, verhalten sich git stash apply und git stash pop so, als ob --index übergeben worden wäre. Standardmäßig false. Siehe die Beschreibungen in git-stash[1].

Dies wirkt sich auch auf Aufrufe von git-stash[1] über --autostash von Befehlen wie git-merge[1], git-rebase[1] und git-pull[1] aus.

stash.showIncludeUntracked

Wenn dies auf true gesetzt ist, zeigt der Befehl git stash show die nicht verfolgten Dateien eines Stash-Eintrags an. Standardmäßig false. Siehe die Beschreibung des Befehls 'show' in git-stash[1].

stash.showPatch

Wenn dies auf true gesetzt ist, zeigt der Befehl git stash show ohne Option den Stash-Eintrag im Patch-Format an. Standardmäßig false. Siehe die Beschreibung des Befehls 'show' in git-stash[1].

stash.showStat

Wenn dies auf true gesetzt ist, zeigt der Befehl git stash show ohne Option einen Diffstat des Stash-Eintrags an. Standardmäßig true. Siehe die Beschreibung des Befehls 'show' in git-stash[1].

status.relativePaths

Standardmäßig zeigt git-status[1] Pfade relativ zum aktuellen Verzeichnis an. Wenn diese Variable auf false gesetzt wird, werden Pfade relativ zum Repository-Stammverzeichnis angezeigt (dies war der Standard für Git vor Version 1.5.4).

status.short

Auf true setzen, um --short standardmäßig in git-status[1] zu aktivieren. Die Option --no-short hat Vorrang vor dieser Variablen.

status.branch

Auf true setzen, um --branch standardmäßig in git-status[1] zu aktivieren. Die Option --no-branch hat Vorrang vor dieser Variablen.

status.aheadBehind

Auf true setzen, um --ahead-behind zu aktivieren und auf false, um --no-ahead-behind standardmäßig in git-status[1] für Nicht-Porcelain-Statusformate zu aktivieren. Standardmäßig true.

status.displayCommentPrefix

Wenn auf true gesetzt, fügt git-status[1] vor jeder Ausgabeverzeile ein Kommentarpräfix ein (beginnend mit core.commentChar, d. h. standardmäßig #). Dies war das Verhalten von git-status[1] in Git 1.8.4 und früheren Versionen. Standardmäßig false.

status.renameLimit

Die Anzahl der Dateien, die bei der Erkennung von Umbenennungen in git-status[1] und git-commit[1] berücksichtigt werden. Standardmäßig der Wert von diff.renameLimit.

status.renames

Ob und wie Git Umbenennungen in git-status[1] und git-commit[1] erkennt. Wenn auf "false" gesetzt, ist die Umbenennungserkennung deaktiviert. Wenn auf "true" gesetzt, ist eine grundlegende Umbenennungserkennung aktiviert. Wenn auf "copies" oder "copy" gesetzt, erkennt Git auch Kopien. Standardmäßig der Wert von diff.renames.

status.showStash

Wenn dies auf true gesetzt ist, zeigt git-status[1] die Anzahl der aktuell verstauten Einträge an. Standardmäßig false.

status.showUntrackedFiles

Standardmäßig zeigen git-status[1] und git-commit[1] Dateien an, die derzeit nicht von Git verfolgt werden. Verzeichnisse, die nur nicht verfolgte Dateien enthalten, werden nur mit dem Verzeichnisnamen angezeigt. Das Anzeigen nicht verfolgter Dateien bedeutet, dass Git alle Dateien im gesamten Repository lstat() muss, was auf einigen Systemen langsam sein kann. Daher steuert diese Variable, wie die Befehle nicht verfolgte Dateien anzeigen. Mögliche Werte sind:

  • no - Keine nicht verfolgten Dateien anzeigen.

  • normal - Nicht verfolgte Dateien und Verzeichnisse anzeigen.

  • all - Auch einzelne Dateien in nicht verfolgten Verzeichnissen anzeigen.

Wenn diese Variable nicht angegeben ist, ist der Standardwert *normal*. Alle üblichen Schreibweisen für den booleschen Wert true werden als normal und false als no interpretiert. Diese Variable kann mit der Option -u|--untracked-files von git-status[1] und git-commit[1] überschrieben werden.

status.submoduleSummary

Standardmäßig false. Wenn dies auf eine Zahl ungleich Null oder true (identisch mit -1 oder einer unbegrenzten Anzahl) gesetzt ist, wird die Submodulübersicht aktiviert und eine Zusammenfassung der Commits für geänderte Submodule angezeigt (siehe --summary-limit Option von git-submodule[1]). Bitte beachten Sie, dass der Befehl zur Ausgabe einer Zusammenfassung für alle Submodule unterdrückt wird, wenn diff.ignoreSubmodules auf *all* gesetzt ist, oder nur für diejenigen Submodule, für die submodule.<name>.ignore=all gilt. Die einzige Ausnahme von dieser Regel ist, dass Status und Commit gestagte Submodule-Änderungen anzeigen. Um auch die Zusammenfassung für ignorierte Submodule anzuzeigen, können Sie entweder die Kommandozeilenoption --ignore-submodules=dirty oder den Befehl *git submodule summary* verwenden, der eine ähnliche Ausgabe anzeigt, aber diese Einstellungen nicht berücksichtigt.

submodule.<name>.url

Die URL für ein Submodul. Diese Variable wird von der .gitmodules-Datei über git submodule init in die Git-Konfiguration kopiert. Der Benutzer kann die konfigurierte URL ändern, bevor das Submodul über git submodule update bezogen wird. Wenn weder submodule.<name>.active noch submodule.active gesetzt sind, wird die Anwesenheit dieser Variable als Fallback verwendet, um anzugeben, ob das Submodul für Git-Befehle von Interesse ist. Siehe git-submodule[1] und gitmodules[5] für Details.

submodule.<name>.update

Die Methode, mit der ein Submodul durch git submodule update aktualisiert wird, was der einzige betroffene Befehl ist; andere wie git checkout --recurse-submodules sind nicht betroffen. Sie existiert aus historischen Gründen, als git submodule der einzige Befehl zur Interaktion mit Submodulen war; Einstellungen wie submodule.active und pull.rebase sind spezifischer. Sie wird von git submodule init aus der gitmodules[5]-Datei gefüllt. Siehe Beschreibung des Befehls update in git-submodule[1].

submodule.<name>.branch

Der Remote-Branch-Name für ein Submodul, der von git submodule update --remote verwendet wird. Setzen Sie diese Option, um den Wert in der .gitmodules-Datei zu überschreiben. Siehe git-submodule[1] und gitmodules[5] für Details.

submodule.<name>.fetchRecurseSubmodules

Diese Option kann verwendet werden, um das rekursive Abrufen dieses Submoduls zu steuern. Sie kann durch die Verwendung der Kommandozeilenoption --[no-]recurse-submodules zu "git fetch" und "git pull" überschrieben werden. Diese Einstellung überschreibt die Einstellung in der gitmodules[5]-Datei.

submodule.<name>.ignore

Definiert unter welchen Umständen "git status" und die Diff-Familie ein Submodul als geändert anzeigen. Wenn auf "all" gesetzt, wird es niemals als geändert betrachtet (aber es wird dennoch in der Ausgabe von Status und Commit angezeigt, wenn es gestaged wurde), "dirty" ignoriert alle Änderungen am Arbeitsverzeichnis des Submoduls und berücksichtigt nur Unterschiede zwischen dem HEAD des Submoduls und dem im Superprojekt aufgezeichneten Commit. "untracked" lässt zusätzlich Submodule mit geänderten verfolgten Dateien in ihrem Arbeitsverzeichnis als geändert erscheinen. Die Verwendung von "none" (Standard, wenn diese Option nicht gesetzt ist) zeigt auch Submodule mit nicht verfolgten Dateien in ihrem Arbeitsverzeichnis als geändert an. Diese Einstellung überschreibt jede in .gitmodules für dieses Submodul getroffene Einstellung, beide Einstellungen können auf der Kommandozeile durch die Option "--ignore-submodules" überschrieben werden. Die git submodule Befehle werden von dieser Einstellung nicht beeinflusst.

submodule.<name>.active

Boolescher Wert, der angibt, ob das Submodul für Git-Befehle von Interesse ist. Diese Konfigurationsoption hat Vorrang vor der Konfigurationsoption submodule.active. Siehe gitsubmodules[7] für Details.

submodule.active

Ein wiederholtes Feld, das einen Pfadspezifikation enthält, die auf den Pfad eines Submoduls angewendet wird, um festzustellen, ob das Submodul für Git-Befehle von Interesse ist. Siehe gitsubmodules[7] für Details.

submodule.recurse

Ein boolescher Wert, der angibt, ob Befehle die Option --recurse-submodules standardmäßig aktivieren sollen. Standardmäßig false.

Wenn auf true gesetzt, kann es durch die Option --no-recurse-submodules deaktiviert werden. Beachten Sie, dass einige Git-Befehle, denen diese Option fehlt, einige der oben genannten Befehle aufrufen, die von submodule.recurse betroffen sind; z. B. ruft git remote update git fetch auf, hat aber keine Option --no-recurse-submodules. Für diese Befehle ist ein Workaround, den Konfigurationswert vorübergehend zu ändern, indem git -c submodule.recurse=0 verwendet wird.

Die folgende Liste zeigt die Befehle, die --recurse-submodules akzeptieren und ob sie von dieser Einstellung unterstützt werden.

  • checkout, fetch, grep, pull, push, read-tree, reset, restore und switch werden immer unterstützt.

  • clone und ls-files werden nicht unterstützt.

  • branch wird nur unterstützt, wenn submodule.propagateBranches aktiviert ist.

submodule.propagateBranches

[EXPERIMENTELL] Ein boolescher Wert, der die Verzweigungsunterstützung aktiviert, wenn --recurse-submodules oder submodule.recurse=true verwendet wird. Wenn dies aktiviert ist, können bestimmte Befehle --recurse-submodules akzeptieren, und bestimmte Befehle, die --recurse-submodules bereits akzeptieren, berücksichtigen nun Verzweigungen. Standardmäßig false.

submodule.fetchJobs

Gibt an, wie viele Submodule gleichzeitig abgerufen/geklont werden. Eine positive Ganzzahl erlaubt bis zu dieser Anzahl von Submodulen, die parallel abgerufen werden. Ein Wert von 0 gibt einen vernünftigen Standardwert. Wenn nicht gesetzt, ist der Standardwert 1.

submodule.alternateLocation

Gibt an, wie Submodule Alternativen abrufen, wenn Submodule geklont werden. Mögliche Werte sind no, superproject. Standardmäßig wird no angenommen, was keine Referenzen hinzufügt. Wenn der Wert auf superproject gesetzt ist, berechnet das zu klonende Submodul seinen Alternativstandort relativ zum Alternativstandort des Superprojekts.

submodule.alternateErrorStrategy

Gibt an, wie Fehler bei den Alternativen für ein Submodul, wie sie über submodule.alternateLocation berechnet werden, behandelt werden. Mögliche Werte sind ignore, info, die. Standard ist die. Beachten Sie, dass, wenn auf ignore oder info gesetzt und es einen Fehler bei der berechneten Alternative gibt, der Klon fortgesetzt wird, als ob keine Alternative angegeben worden wäre.

tag.forceSignAnnotated

Ein boolescher Wert, der angibt, ob erstellte annotierte Tags GPG-signiert werden sollen. Wenn --annotate auf der Kommandozeile angegeben wird, hat dies Vorrang vor dieser Option.

tag.sort

Diese Variable steuert die Sortierreihenfolge von Tags, wenn sie von git-tag[1] angezeigt werden. Wenn die Option --sort=<value> nicht angegeben ist, wird der Wert dieser Variable als Standard verwendet.

tag.gpgSign

Ein boolescher Wert, der angibt, ob alle Tags GPG-signiert werden sollen. Die Verwendung dieser Option in einem automatisierten Skript kann dazu führen, dass eine große Anzahl von Tags signiert wird. Daher ist es praktisch, einen Agenten zu verwenden, um zu vermeiden, dass Ihre GPG-Passphrase mehrmals eingegeben werden muss. Beachten Sie, dass diese Option das Tag-Signierungsverhalten, das durch die Optionen -u <keyid> oder --local-user=<keyid> aktiviert wird, nicht beeinflusst.

tar.umask

Diese Variable kann verwendet werden, um die Berechtigungsbits von Tar-Archiv-Einträgen einzuschränken. Der Standardwert ist 0002, was das Schreibrecht für alle entfernt. Der Sonderwert "user" gibt an, dass stattdessen die umask des Archivierungbenutzers verwendet wird. Siehe umask(2) und git-archive[1].

Trace2-Konfigurationseinstellungen werden nur aus den System- und globalen Konfigurationsdateien gelesen; Repository-lokale und Worktree-Konfigurationsdateien sowie -c-Argumente auf der Kommandozeile werden nicht berücksichtigt.

trace2.normalTarget

Diese Variable steuert das normale Ziel. Sie kann durch die Umgebungsvariable GIT_TRACE2 überschrieben werden. Die folgende Tabelle zeigt mögliche Werte.

trace2.perfTarget

Diese Variable steuert das Leistungsziel. Sie kann durch die Umgebungsvariable GIT_TRACE2_PERF überschrieben werden. Die folgende Tabelle zeigt mögliche Werte.

trace2.eventTarget

Diese Variable steuert das Ereignisziel. Sie kann durch die Umgebungsvariable GIT_TRACE2_EVENT überschrieben werden. Die folgende Tabelle zeigt mögliche Werte.

  • 0 oder false - Deaktiviert das Ziel.

  • 1 oder true - Schreibt auf STDERR.

  • [2-9] - Schreibt auf den bereits geöffneten Dateideskriptor.

  • <absolute-pathname> - Schreibt im Anfügemodus in die Datei. Wenn das Ziel bereits existiert und ein Verzeichnis ist, werden die Spuren in Dateien (eine pro Prozess) unterhalb des angegebenen Verzeichnisses geschrieben.

  • af_unix:[<socket-type>:]<absolute-pathname> - Schreibt auf eine Unix Domain Socket (auf Plattformen, die sie unterstützen). Der Socket-Typ kann entweder stream oder dgram sein; wenn weggelassen, versucht Git beides.

trace2.normalBrief

Boolesch. Wenn true, werden die Felder time, filename und line aus der normalen Ausgabe weggelassen. Kann durch die Umgebungsvariable GIT_TRACE2_BRIEF überschrieben werden. Standardmäßig false.

trace2.perfBrief

Boolesch. Wenn true, werden die Felder time, filename und line aus der PERF-Ausgabe weggelassen. Kann durch die Umgebungsvariable GIT_TRACE2_PERF_BRIEF überschrieben werden. Standardmäßig false.

trace2.eventBrief

Boolesch. Wenn true, werden die Felder time, filename und line aus der Ereignisausgabe weggelassen. Kann durch die Umgebungsvariable GIT_TRACE2_EVENT_BRIEF überschrieben werden. Standardmäßig false.

trace2.eventNesting

Ganzzahl. Gibt die gewünschte Tiefe von verschachtelten Regionen in der Ereignisausgabe an. Regionen, die tiefer als dieser Wert sind, werden weggelassen. Kann durch die Umgebungsvariable GIT_TRACE2_EVENT_NESTING überschrieben werden. Standardmäßig 2.

trace2.configParams

Eine kommagetrennte Liste von Mustern für "wichtige" Konfigurationseinstellungen, die in der Trace2-Ausgabe aufgezeichnet werden sollen. Zum Beispiel würden core.*,remote.*.url dazu führen, dass die Trace2-Ausgabe Ereignisse mit allen konfigurierten Remotes enthält. Kann durch die Umgebungsvariable GIT_TRACE2_CONFIG_PARAMS überschrieben werden. Standardmäßig nicht gesetzt.

trace2.envVars

Eine kommagetrennte Liste von "wichtigen" Umgebungsvariablen, die in der Trace2-Ausgabe aufgezeichnet werden sollen. Zum Beispiel würden GIT_HTTP_USER_AGENT,GIT_CONFIG dazu führen, dass die Trace2-Ausgabe Ereignisse enthält, die die Überschreibungen für den HTTP-User-Agenten und den Speicherort der Git-Konfigurationsdatei auflisten (vorausgesetzt, sie sind gesetzt). Kann durch die Umgebungsvariable GIT_TRACE2_ENV_VARS überschrieben werden. Standardmäßig nicht gesetzt.

trace2.destinationDebug

Boolesch. Wenn true, gibt Git Fehlermeldungen aus, wenn ein Ziel für die Trace-Ausgabe nicht zum Schreiben geöffnet werden kann. Standardmäßig werden diese Fehler unterdrückt und das Tracing wird stillschweigend deaktiviert. Kann durch die Umgebungsvariable GIT_TRACE2_DST_DEBUG überschrieben werden.

trace2.maxFiles

Ganzzahl. Wenn Tracdateien in ein Zielverzeichnis geschrieben werden, werden keine weiteren Traces geschrieben, wenn dies die angegebene Anzahl überschreitet. Stattdessen wird eine Sentinel-Datei geschrieben, die weitere Trace-Ausgaben in dieses Verzeichnis blockiert. Standardmäßig 0, was diese Prüfung deaktiviert.

trailer.separators

Diese Option gibt an, welche Zeichen als Trennzeichen für Trailer erkannt werden. Standardmäßig wird nur *:* als Trennzeichen für Trailer erkannt, außer dass *= immer auf der Kommandozeile zur Kompatibilität mit anderen Git-Befehlen akzeptiert wird.

Das erste von dieser Option angegebene Zeichen ist das Standardzeichen, das verwendet wird, wenn kein anderes Trennzeichen in der Konfiguration für diesen Trailer angegeben ist.

Wenn beispielsweise der Wert für diese Option "%=$" ist, werden nur Zeilen im Format <key><sep><value> mit <sep>, das %, = oder $ und dann Leerzeichen enthält, als Trailer betrachtet. Und % ist das Standardtrennzeichen, das verwendet wird, sodass Trailer standardmäßig wie folgt aussehen: <key>% <value> (ein Prozentzeichen und ein Leerzeichen erscheinen zwischen Schlüssel und Wert).

trailer.where

Diese Option gibt an, wo ein neuer Trailer hinzugefügt wird.

Dies kann end (Standard), start, after oder before sein.

Wenn es end ist, erscheint jeder neue Trailer am Ende der vorhandenen Trailer.

Wenn es start ist, erscheint jeder neue Trailer am Anfang, anstatt am Ende, der vorhandenen Trailer.

Wenn es after ist, erscheint jeder neue Trailer direkt nach dem letzten Trailer mit demselben <key>.

Wenn es before ist, erscheint jeder neue Trailer direkt vor dem ersten Trailer mit demselben <key>.

trailer.ifexists

Diese Option ermöglicht die Wahl der Aktion, die ausgeführt wird, wenn bereits mindestens ein Trailer mit demselben <key> in der Eingabe vorhanden ist.

Die gültigen Werte für diese Option sind: addIfDifferentNeighbor (dies ist der Standard), addIfDifferent, add, replace oder doNothing.

Mit addIfDifferentNeighbor wird ein neuer Trailer nur hinzugefügt, wenn kein Trailer mit demselben (<key>, <value>) Paar oberhalb oder unterhalb der Zeile vorhanden ist, in der der neue Trailer hinzugefügt wird.

Mit addIfDifferent wird ein neuer Trailer nur hinzugefügt, wenn kein Trailer mit demselben (<key>, <value>) Paar bereits in der Eingabe vorhanden ist.

Mit add wird ein neuer Trailer hinzugefügt, auch wenn bereits einige Trailer mit demselben (<key>, <value>) Paar in der Eingabe vorhanden sind.

Mit replace wird ein vorhandener Trailer mit demselben <key> gelöscht und der neue Trailer hinzugefügt. Der gelöschte Trailer ist derjenige, der dem Ort am nächsten liegt (mit demselben <key>), an dem der neue hinzugefügt wird.

Mit doNothing wird nichts unternommen; das heißt, es wird kein neuer Trailer hinzugefügt, wenn bereits einer mit demselben <key> in der Eingabe vorhanden ist.

trailer.ifmissing

Diese Option ermöglicht die Wahl der Aktion, die ausgeführt wird, wenn noch kein Trailer mit demselben <key> in der Eingabe vorhanden ist.

Die gültigen Werte für diese Option sind: add (dies ist der Standard) und doNothing.

Mit add wird ein neuer Trailer hinzugefügt.

Mit doNothing wird nichts unternommen.

trailer.<keyAlias>.key

Definiert einen <keyAlias> für den <key>. Der <keyAlias> muss ein Präfix (Groß-/Kleinschreibung wird nicht beachtet) des <key> sein. Zum Beispiel ist in git config trailer.ack.key "Acked-by" "Acked-by" der <key> und "ack" ist der <keyAlias>. Diese Konfiguration ermöglicht die kürzere Einleitung von --trailer "ack:..." auf der Kommandozeile unter Verwendung des "ack" <keyAlias> anstelle der längeren Einleitung von --trailer "Acked-by:...".

Am Ende des <key> kann ein Trennzeichen erscheinen, gefolgt von einigen Leerzeichen. Standardmäßig ist der einzige gültige Trennzeichen-Charakter *:*, aber dies kann mit der Konfigurationsvariable trailer.separators geändert werden.

Wenn sich ein Trennzeichen im Schlüssel befindet, überschreibt dies das Standardtrennzeichen beim Hinzufügen des Trailers.

trailer.<keyAlias>.where

Diese Option nimmt dieselben Werte wie die Konfigurationsvariable trailer.where an und überschreibt das von dieser Option für Trailer mit dem angegebenen <keyAlias> spezifizierte.

trailer.<keyAlias>.ifexists

Diese Option nimmt dieselben Werte wie die Konfigurationsvariable trailer.ifexists an und überschreibt das von dieser Option für Trailer mit dem angegebenen <keyAlias> spezifizierte.

trailer.<keyAlias>.ifmissing

Diese Option nimmt dieselben Werte wie die Konfigurationsvariable trailer.ifmissing an und überschreibt das von dieser Option für Trailer mit dem angegebenen <keyAlias> spezifizierte.

trailer.<keyAlias>.command

Veraltet zugunsten von trailer.<keyAlias>.cmd. Diese Option verhält sich genauso wie trailer.<keyAlias>.cmd, außer dass sie nichts als Argument an den angegebenen Befehl übergibt. Stattdessen wird die erste Vorkommnis des Unterstrings $ARG durch den Wert ersetzt, der als Argument übergeben würde.

Beachten Sie, dass $ARG im Befehl des Benutzers nur einmal ersetzt wird und dass die ursprüngliche Art der Ersetzung von $ARG nicht sicher ist.

Wenn sowohl trailer.<keyAlias>.cmd als auch trailer.<keyAlias>.command für denselben <keyAlias> angegeben sind, wird trailer.<keyAlias>.cmd verwendet und trailer.<keyAlias>.command ignoriert.

trailer.<keyAlias>.cmd

Diese Option kann verwendet werden, um einen Shell-Befehl anzugeben, der einmal aufgerufen wird, um automatisch einen Trailer mit dem angegebenen <keyAlias> hinzuzufügen, und dann jedes Mal aufgerufen wird, wenn ein --trailer <keyAlias>=<value>-Argument angegeben wird, um den <value> des Trailers zu ändern, den diese Option erzeugen würde.

Wenn der angegebene Befehl zum ersten Mal aufgerufen wird, um einen Trailer mit dem angegebenen <keyAlias> hinzuzufügen, verhält es sich so, als ob ein spezielles --trailer <keyAlias>=<value>-Argument am Anfang des Befehls "git interpret-trailers" hinzugefügt wurde, wobei <value> die Standardausgabe des Befehls mit entfernten führenden und abschließenden Leerzeichen ist.

Wenn auch --trailer <keyAlias>=<value>-Argumente auf der Befehlszeile übergeben werden, wird der Befehl für jedes dieser Argumente mit demselben <keyAlias> einmal wieder aufgerufen. Und der <value>-Teil dieser Argumente, falls vorhanden, wird dem Befehl als erstes Argument übergeben. Auf diese Weise kann der Befehl einen <value> erzeugen, der aus dem <value> berechnet wird, das im --trailer <keyAlias>=<value>-Argument übergeben wurde.

transfer.credentialsInUrl

Eine konfigurierte URL kann Klartext-Anmeldeinformationen im Format <protocol>://<user>:<password>@<domain>/<path> enthalten. Möglicherweise möchten Sie die Verwendung einer solchen Konfiguration warnen oder verbieten (zugunsten der Verwendung von git-credential[1]). Dies wird bei git-clone[1], git-fetch[1], git-push[1] und jeder anderen direkten Verwendung der konfigurierten URL verwendet.

Beachten Sie, dass dies derzeit auf die Erkennung von Anmeldeinformationen in der Konfiguration remote.<name>.url beschränkt ist; es erkennt keine Anmeldeinformationen in der Konfiguration remote.<name>.pushurl.

Sie möchten dies möglicherweise aktivieren, um eine versehentliche Offenlegung von Anmeldeinformationen zu verhindern, z. B. weil

  • Das Betriebssystem oder das System, auf dem Sie Git ausführen, bietet möglicherweise keine Möglichkeit oder erlaubt Ihnen nicht, die Berechtigungen der Konfigurationsdatei festzulegen, in der der Benutzername und/oder das Passwort gespeichert sind.

  • Selbst wenn dies der Fall ist, könnten solche Daten "im Ruhezustand" gespeichert sein und Sie auf andere Weise exponieren, z. B. ein Sicherungsprozess könnte die Daten auf ein anderes System kopieren.

  • Die Git-Programme übergeben die vollständige URL auf der Befehlszeile aneinander, was bedeutet, dass die Anmeldeinformationen für andere nicht privilegierte Benutzer auf Systemen, die es ihnen erlauben, die vollständige Prozessliste anderer Benutzer zu sehen, offengelegt werden. Unter Linux ermöglicht die Einstellung "hidepid", die in procfs(5) dokumentiert ist, die Konfiguration dieses Verhaltens.

    Wenn Sie solche Bedenken nicht haben, müssen Sie sich wahrscheinlich keine Gedanken über die Offenlegung von Anmeldeinformationen aufgrund der Speicherung sensibler Daten in Git-Konfigurationsdateien machen. Wenn Sie dies verwenden möchten, setzen Sie transfer.credentialsInUrl auf einen der folgenden Werte

  • allow (Standard): Git fährt mit seiner Aktivität fort, ohne zu warnen.

  • warn: Git schreibt eine Warnmeldung nach stderr, wenn eine URL mit Anmeldeinformationen im Klartext geparst wird.

  • die: Git schreibt eine Fehlermeldung nach stderr, wenn eine URL mit Anmeldeinformationen im Klartext geparst wird.

transfer.fsckObjects

Wenn fetch.fsckObjects oder receive.fsckObjects nicht gesetzt sind, wird stattdessen der Wert dieser Variablen verwendet. Standardmäßig false.

Wenn gesetzt, werden der Fetch- oder Receive-Vorgang bei einem fehlerhaften Objekt oder einem Link zu einem nicht vorhandenen Objekt abgebrochen. Darüber hinaus werden verschiedene andere Probleme überprüft, einschließlich Legacy-Probleme (siehe fsck.<msg-id>) und potenzielle Sicherheitsprobleme wie die Existenz eines .GIT-Verzeichnisses oder einer bösartigen .gitmodules-Datei (siehe die Release Notes für v2.2.1 und v2.17.1 für Details). Andere Integritäts- und Sicherheitsprüfungen können in zukünftigen Versionen hinzugefügt werden.

Auf der Empfangsseite machen fehlgeschlagene fsckObjects diese Objekte unerreichbar, siehe "QUARANTINE ENVIRONMENT" in git-receive-pack[1]. Auf der Fetch-Seite werden fehlerhafte Objekte stattdessen als nicht referenziert im Repository belassen.

Aufgrund der nicht-Quarantäne-Natur der fetch.fsckObjects-Implementierung kann diese nicht dazu verwendet werden, den Objekt-Store sauber zu hinterlassen, wie es receive.fsckObjects kann.

Beim Entpacken von Objekten werden diese in den Objekt-Store geschrieben, so dass es Fälle geben kann, in denen bösartige Objekte eingeführt werden, obwohl der "fetch" fehlgeschlagen ist, und ein nachfolgender "fetch" erfolgreich ist, da nur neue eingehende Objekte überprüft werden, nicht die, die bereits in den Objekt-Store geschrieben wurden. Auf diesen Verhaltensunterschied sollte man sich nicht verlassen. In Zukunft können solche Objekte auch für "fetch" unter Quarantäne gestellt werden.

Für den Moment müssen die Paranoiden einen Weg finden, die Quarantäneumgebung zu emulieren, wenn sie denselben Schutz wie bei "push" wünschen. Z. B. im Falle eines internen Spiegels, führen Sie das Spiegeln in zwei Schritten durch, einen zum Abrufen der nicht vertrauenswürdigen Objekte, und dann einen zweiten "push" (der die Quarantäne verwendet) in ein anderes internes Repository, und lassen Sie interne Clients dieses Repository konsumieren, oder embargo Sie interne Fetches und erlauben Sie sie erst, nachdem ein vollständiger "fsck" gelaufen ist (und in der Zwischenzeit keine neuen Fetches stattgefunden haben).

transfer.hideRefs

Zeichenkette(n), die receive-pack und upload-pack verwenden, um zu entscheiden, welche Refs aus ihren anfänglichen Anzeigen weggelassen werden sollen. Verwenden Sie mehr als eine Definition, um mehrere Präfixzeichenfolgen anzugeben. Ein Ref, das sich unter den Hierarchien befindet, die im Wert dieser Variablen aufgeführt sind, wird ausgeschlossen und wird beim Antworten auf git push oder git fetch verborgen. Siehe receive.hideRefs und uploadpack.hideRefs für programmspezifische Versionen dieser Konfiguration.

Sie können auch ein ! vor dem Ref-Namen einfügen, um den Eintrag zu negieren und ihn explizit offenzulegen, auch wenn ein früherer Eintrag ihn als verborgen markiert hat. Wenn Sie mehrere hideRefs-Werte haben, überschreiben spätere Einträge frühere Einträge (und Einträge in spezifischeren Konfigurationsdateien überschreiben weniger spezifische).

Wenn ein Namespace verwendet wird, wird das Namespace-Präfix von jedem Referenz entfernt, bevor es mit den transfer.hiderefs-Mustern abgeglichen wird. Um Refs vor dem Entfernen abzugleichen, fügen Sie ein ^ vor dem Ref-Namen hinzu. Wenn Sie ! und ^ kombinieren, muss ! zuerst angegeben werden.

Zum Beispiel, wenn refs/heads/master in transfer.hideRefs angegeben ist und der aktuelle Namespace foo ist, dann wird refs/namespaces/foo/refs/heads/master aus den Anzeigen weggelassen. Wenn uploadpack.allowRefInWant gesetzt ist, behandelt upload-pack want-ref refs/heads/master in einem Protokoll v2 fetch-Befehl so, als ob refs/namespaces/foo/refs/heads/master nicht existieren würde. receive-pack hingegen wird immer noch die Objekt-ID der Referenz, auf die sie zeigt, ohne Nennung ihres Namens (eine sogenannte ".have"-Zeile) anzeigen.

Auch wenn Sie Refs verbergen, kann ein Client die Zielobjekte immer noch über die im Abschnitt "SECURITY" von gitnamespaces[7] beschriebenen Techniken stehlen. Es ist am besten, private Daten in einem separaten Repository aufzubewahren.

transfer.unpackLimit

Wenn fetch.unpackLimit oder receive.unpackLimit nicht gesetzt sind, wird stattdessen der Wert dieser Variablen verwendet. Der Standardwert ist 100.

transfer.advertiseSID

Boolean. Wenn true, werben Client- und Serverprozesse ihre eindeutigen Sitzungs-IDs bei ihrem Remote-Gegenstück an. Standardmäßig false.

transfer.bundleURI

Wenn true, fordern lokale git clone-Befehle Bundle-Informationen vom Remote-Server an (falls beworben) und laden Bundles herunter, bevor der Klonvorgang über das Git-Protokoll fortgesetzt wird. Standardmäßig false.

transfer.advertiseObjectInfo

Wenn true, wird die Fähigkeit object-info von Servern beworben. Standardmäßig false.

uploadarchive.allowUnreachable

Wenn true, erlaubt Clients die Verwendung von git archive --remote, um jeden Baum anzufordern, unabhängig davon, ob er von den Ref-Tipps erreichbar ist oder nicht. Siehe die Diskussion im Abschnitt "SECURITY" von git-upload-archive[1] für weitere Details. Standardmäßig false.

uploadpack.hideRefs

Diese Variable ist identisch mit transfer.hideRefs, gilt aber nur für upload-pack (und beeinflusst daher nur Fetches, keine Pushes). Ein Versuch, einen versteckten Ref über git fetch abzurufen, schlägt fehl. Siehe auch uploadpack.allowTipSHA1InWant.

uploadpack.allowTipSHA1InWant

Wenn uploadpack.hideRefs aktiv ist, erlaubt upload-pack die Annahme einer Fetch-Anforderung, die nach einem Objekt an der Spitze eines versteckten Refs fragt (standardmäßig wird eine solche Anforderung abgelehnt). Siehe auch uploadpack.hideRefs. Selbst wenn dies false ist, kann ein Client Objekte über die im Abschnitt "SECURITY" von gitnamespaces[7] beschriebenen Techniken stehlen. Es ist am besten, private Daten in einem separaten Repository aufzubewahren.

uploadpack.allowReachableSHA1InWant

Erlaubt upload-pack, eine Fetch-Anforderung anzunehmen, die nach einem Objekt fragt, das von einem beliebigen Ref-Tip erreichbar ist. Beachten Sie jedoch, dass die Berechnung der Objekt-Erreichbarkeit rechenintensiv ist. Standardmäßig false. Selbst wenn dies false ist, kann ein Client Objekte über die im Abschnitt "SECURITY" von gitnamespaces[7] beschriebenen Techniken stehlen. Es ist am besten, private Daten in einem separaten Repository aufzubewahren.

uploadpack.allowAnySHA1InWant

Erlaubt upload-pack, eine Fetch-Anforderung anzunehmen, die nach einem beliebigen Objekt fragt. Dies impliziert uploadpack.allowTipSHA1InWant und uploadpack.allowReachableSHA1InWant. Wenn auf true gesetzt, werden beide aktiviert, wenn auf false gesetzt, werden beide deaktiviert. Standardmäßig nicht gesetzt.

uploadpack.keepAlive

Wenn upload-pack pack-objects gestartet hat, kann es eine Ruhephase geben, während pack-objects das Paket vorbereitet. Normalerweise würde es Fortschrittsinformationen ausgeben, aber wenn --quiet für den Fetch verwendet wurde, gibt pack-objects nichts aus, bis die Paketdaten beginnen. Einige Clients und Netzwerke könnten den Server als hängend betrachten und aufgeben. Das Setzen dieser Option weist upload-pack an, alle uploadpack.keepAlive Sekunden ein leeres Keepalive-Paket zu senden. Das Setzen dieser Option auf 0 deaktiviert Keepalive-Pakete vollständig. Der Standardwert ist 5 Sekunden.

uploadpack.packObjectsHook

Wenn diese Option gesetzt ist, wenn upload-pack git pack-objects ausführt, um ein Packfile für einen Client zu erstellen, führt es stattdessen diesen Shell-Befehl aus. Der pack-objects-Befehl und die Argumente, die es ausführen würde (einschließlich des git pack-objects am Anfang), werden an den Shell-Befehl angehängt. Die Standardeingabe und -ausgabe des Hooks werden so behandelt, als ob pack-objects selbst ausgeführt wurde. D. h., upload-pack übergibt die für pack-objects bestimmten Eingaben an den Hook und erwartet ein abgeschlossenes Packfile auf der Standardausgabe.

Beachten Sie, dass diese Konfigurationsvariable nur berücksichtigt wird, wenn sie in einer geschützten Konfiguration angegeben ist (siehe SCOPES). Dies ist eine Sicherheitsmaßnahme gegen das Abrufen aus nicht vertrauenswürdigen Repositories.

uploadpack.allowFilter

Wenn diese Option gesetzt ist, unterstützt upload-pack das partielle Klonen und partielle Abrufen von Objektfiltern.

uploadpackfilter.allow

Bietet einen Standardwert für nicht spezifizierte Objektfilter (siehe: die untenstehende Konfigurationsvariable). Wenn auf true gesetzt, werden dadurch auch alle Filter aktiviert, die in Zukunft hinzugefügt werden. Standardmäßig true.

uploadpackfilter.<filter>.allow

Erlaubt oder verbietet explizit den Objektfilter, der <filter> entspricht, wobei <filter> einer der folgenden sein kann: blob:none, blob:limit, object:type, tree, sparse:oid oder combine. Bei Verwendung von kombinierten Filtern müssen sowohl combine als auch alle verschachtelten Filterarten erlaubt sein. Standardmäßig uploadpackfilter.allow.

uploadpackfilter.tree.maxDepth

Erlaubt --filter=tree:<n> nur, wenn <n> nicht größer ist als der Wert von uploadpackfilter.tree.maxDepth. Wenn gesetzt, impliziert dies auch uploadpackfilter.tree.allow=true, es sei denn, diese Konfigurationsvariable wurde bereits gesetzt. Hat keine Auswirkung, wenn nicht gesetzt.

uploadpack.allowRefInWant

Wenn diese Option gesetzt ist, unterstützt upload-pack das ref-in-want-Feature des Protokollversion 2 fetch-Befehls. Dieses Feature ist für die Vorteile von Lastverteilungs-Servern gedacht, die möglicherweise nicht dieselbe Sicht darauf haben, welche OIDs ihre Refs aufgrund von Replikationsverzögerungen zeigen.

url.<base>.insteadOf

Jede URL, die mit diesem Wert beginnt, wird umgeschrieben, um stattdessen mit <base> zu beginnen. In Fällen, in denen eine Website eine große Anzahl von Repositories hostet und diese mit mehreren Zugriffsmethoden hostet, und einige Benutzer unterschiedliche Zugriffsmethoden verwenden müssen, ermöglicht diese Funktion den Personen, jede der äquivalenten URLs anzugeben, und Git schreibt die URL automatisch für den jeweiligen Benutzer in die beste Alternative um, selbst für ein noch nie zuvor gesehene Repository auf der Website. Wenn mehr als eine insteadOf-Zeichenkette mit einer gegebenen URL übereinstimmt, wird die längste Übereinstimmung verwendet.

Beachten Sie, dass alle Protokollbeschränkungen auf die umgeschriebene URL angewendet werden. Wenn die Umschreibung die URL zur Verwendung eines benutzerdefinierten Protokolls oder Remote-Helpers ändert, müssen Sie möglicherweise die Konfiguration protocol.*.allow anpassen, um die Anforderung zuzulassen. Insbesondere Protokolle, die Sie für Submodule verwenden möchten, müssen auf always und nicht auf den Standardwert user gesetzt werden. Siehe die Beschreibung von protocol.allow oben.

url.<base>.pushInsteadOf

Jede URL, die mit diesem Wert beginnt, wird nicht gepusht; stattdessen wird sie umgeschrieben, um mit <base> zu beginnen, und die resultierende URL wird gepusht. In Fällen, in denen eine Website eine große Anzahl von Repositories hostet und diese mit mehreren Zugriffsmethoden hostet, von denen einige kein Push erlauben, ermöglicht diese Funktion den Personen, eine nur-Pull-URL anzugeben, und Git verwendet automatisch eine geeignete URL zum Pushen, selbst für ein noch nie zuvor gesehene Repository auf der Website. Wenn mehr als eine pushInsteadOf-Zeichenkette mit einer gegebenen URL übereinstimmt, wird die längste Übereinstimmung verwendet. Wenn ein Remote eine explizite pushurl hat, ignoriert Git diese Einstellung für dieses Remote.

user.name
user.email
author.name
author.email
committer.name
committer.email

Die Variablen user.name und user.email bestimmen, was in den Feldern author und committer von Commit-Objekten landet. Wenn Sie möchten, dass der author oder committer unterschiedlich ist, können die Variablen author.name, author.email, committer.name oder committer.email gesetzt werden. All diese können durch die Umgebungsvariablen GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL und EMAIL überschrieben werden.

Beachten Sie, dass sich die name-Formen dieser Variablen konventionell auf eine Art von persönlichem Namen beziehen. Siehe git-commit[1] und den Abschnitt über Umgebungsvariablen von git[1] für weitere Informationen zu diesen Einstellungen und der Option credential.username, wenn Sie stattdessen nach Authentifizierungsanmeldeinformationen suchen.

user.useConfigOnly

Weist Git an, zu vermeiden, Standardwerte für user.email und user.name zu erraten, und stattdessen die Werte nur aus der Konfiguration abzurufen. Wenn Sie beispielsweise mehrere E-Mail-Adressen haben und für jedes Repository eine andere verwenden möchten, werden Sie mit dieser Konfigurationsoption, die in der globalen Konfiguration auf true gesetzt ist, zusammen mit einem Namen aufgefordert, eine E-Mail einzurichten, bevor Sie neue Commits in einem neu geklonten Repository vornehmen. Standardmäßig false.

user.signingKey

Wenn git-tag[1] oder git-commit[1] nicht den gewünschten Schlüssel automatisch auswählt, wenn ein signierter Tag oder Commit erstellt wird, können Sie die Standardauswahl mit dieser Variablen überschreiben. Diese Option wird unverändert an GPGs --local-user-Parameter übergeben, sodass Sie einen Schlüssel mit jeder Methode angeben können, die GPG unterstützt. Wenn gpg.format auf ssh gesetzt ist, kann dies den Pfad zu Ihrem privaten SSH-Schlüssel oder dem öffentlichen Schlüssel enthalten, wenn ssh-agent verwendet wird. Alternativ kann es direkt einen öffentlichen Schlüssel enthalten, der mit key:: präfixiert ist (z. B.: "key::ssh-rsa XXXXXX identifier"). Der private Schlüssel muss über ssh-agent verfügbar sein. Wenn nicht gesetzt, ruft Git gpg.ssh.defaultKeyCommand auf (z. B.: "ssh-add -L") und versucht, den ersten verfügbaren Schlüssel zu verwenden. Für die Abwärtskompatibilität wird ein roher Schlüssel, der mit "ssh-" beginnt, wie z. B. "ssh-rsa XXXXXX identifier", als "key::ssh-rsa XXXXXX identifier" behandelt, aber diese Form ist veraltet; verwenden Sie stattdessen die Form key::.

versionsort.prereleaseSuffix (deprecated)

Veraltetes Alias für versionsort.suffix. Wird ignoriert, wenn versionsort.suffix gesetzt ist.

versionsort.suffix

Auch wenn die VersionSortierung in git-tag[1] verwendet wird, werden Tagnamen mit derselben Basisversion, aber unterschiedlichen Suffixen immer noch lexikografisch sortiert, was z. B. dazu führt, dass Pre-Release-Tags nach der Hauptveröffentlichung erscheinen (z. B. "1.0-rc1" nach "1.0"). Diese Variable kann angegeben werden, um die Sortierreihenfolge von Tags mit unterschiedlichen Suffixen zu bestimmen.

Durch Angabe eines einzelnen Suffixes in dieser Variablen erscheinen Tagnamen, die dieses Suffix enthalten, vor der entsprechenden Hauptversion. Z. B. wenn die Variable auf "-rc" gesetzt ist, erscheinen alle "1.0-rcX"-Tags vor "1.0". Wenn sie mehrmals, einmal pro Suffix, angegeben wird, bestimmt die Reihenfolge der Suffixe in der Konfiguration die Sortierreihenfolge von Tagnamen mit diesen Suffixen. Z. B. wenn "-pre" vor "-rc" in der Konfiguration erscheint, werden alle "1.0-preX"-Tags vor allen "1.0-rcX"-Tags aufgeführt. Die Platzierung des Hauptversions-Tags relativ zu Tags mit verschiedenen Suffixen kann durch Angabe des leeren Suffixes unter diesen anderen Suffixen bestimmt werden. Z. B. wenn die Suffixe "-rc", "", "-ck" und "-bfs" in dieser Reihenfolge in der Konfiguration erscheinen, werden zuerst alle "v4.8-rcX"-Tags aufgeführt, gefolgt von "v4.8", dann "v4.8-ckX" und schließlich "v4.8-bfsX".

Wenn mehr als ein Suffix mit demselben Tagnamen übereinstimmt, wird dieser Tagname gemäß dem Suffix sortiert, das an der frühesten Position im Tagnamen beginnt. Wenn mehr als ein unterschiedliches übereinstimmendes Suffix an dieser frühesten Position beginnt, wird dieser Tagname gemäß dem längsten dieser Suffixe sortiert. Die Sortierreihenfolge zwischen verschiedenen Suffixen ist undefiniert, wenn sie sich in mehreren Konfigurationsdateien befinden.

web.browser

Gibt einen Webbrowser an, der von einigen Befehlen verwendet werden kann. Derzeit können nur git-instaweb[1] und git-help[1] ihn verwenden.

worktree.guessRemote

Wenn kein Branch angegeben ist und weder -b noch -B noch --detach verwendet wird, erstellt git worktree add standardmäßig einen neuen Branch aus HEAD. Wenn worktree.guessRemote auf true gesetzt ist, versucht worktree add, einen Remote-Tracking-Branch zu finden, dessen Name eindeutig mit dem neuen Branch-Namen übereinstimmt. Wenn ein solcher Branch existiert, wird er ausgecheckt und als "Upstream" für den neuen Branch gesetzt. Wenn keine solche Übereinstimmung gefunden werden kann, wird standardmäßig ein neuer Branch aus dem aktuellen HEAD erstellt.

worktree.useRelativePaths

Verknüpft Worktrees mit relativen Pfaden (wenn "true") oder absoluten Pfaden (wenn "false"). Dies ist besonders nützlich für Setups, bei denen das Repository und die Worktrees möglicherweise zwischen verschiedenen Orten oder Umgebungen verschoben werden. Standardmäßig "false".

Beachten Sie, dass das Setzen von worktree.useRelativePaths auf "true" die Aktivierung der Konfiguration extensions.relativeWorktrees (siehe git-config[1]) impliziert und es daher inkompatibel mit älteren Git-Versionen macht.

BUGS

Wenn die veraltete Syntax [section.subsection] verwendet wird, führt das Ändern eines Werts dazu, dass ein mehrzeiliger Schlüssel hinzugefügt wird, anstatt einer Änderung, wenn die Unterabschnitt mit mindestens einem Großbuchstaben angegeben wird. Zum Beispiel, wenn die Konfiguration so aussieht

  [section.subsection]
    key = value1

und das Ausführen von git config section.Subsection.key value2 führt zu

  [section.subsection]
    key = value1
    key = value2

GIT

Teil der git[1] Suite