Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 keine Änderungen
-
2.51.0
2025-08-18
- 2.49.1 → 2.50.1 keine Änderungen
- 2.49.0 keine Änderungen
- 2.48.1 → 2.48.2 keine Änderungen
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.3 keine Änderungen
-
2.47.0
2024-10-06
- 2.46.1 → 2.46.4 keine Änderungen
-
2.46.0
2024-07-29
- 2.45.4 keine Änderungen
-
2.45.3
2024-11-26
- 2.45.1 → 2.45.2 keine Änderungen
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 keine Änderungen
-
2.44.0
2024-02-23
- 2.43.2 → 2.43.7 keine Änderungen
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.42.2 → 2.42.4 keine Änderungen
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 keine Änderungen
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 keine Änderungen
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 keine Änderungen
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 keine Änderungen
-
2.38.0
2022-10-02
- 2.37.3 → 2.37.7 keine Änderungen
-
2.37.2
2022-08-11
- 2.36.1 → 2.37.1 keine Änderungen
-
2.36.0
2022-04-18
- 2.34.1 → 2.35.8 keine Änderungen
-
2.34.0
2021-11-15
- 2.33.1 → 2.33.8 keine Änderungen
-
2.33.0
2021-08-16
- 2.32.1 → 2.32.7 keine Änderungen
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 keine Änderungen
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 keine Änderungen
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 keine Änderungen
-
2.29.0
2020-10-19
- 2.28.1 keine Änderungen
-
2.28.0
2020-07-27
- 2.25.2 → 2.27.1 keine Änderungen
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 keine Änderungen
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 keine Änderungen
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 keine Änderungen
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 keine Änderungen
-
2.20.0
2018-12-09
- 2.19.3 → 2.19.6 keine Änderungen
-
2.19.2
2018-11-21
- 2.19.1 keine Änderungen
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 keine Änderungen
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 keine Änderungen
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
- 2.10.5 keine Änderungen
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 keine Änderungen
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
gitdiff[<options>] [<commit>] [--] [<path>…]gitdiff[<options>]--cached[--merge-base] [<commit>] [--] [<path>…]gitdiff[<options>] [--merge-base] <commit> [<commit>…] <commit> [--] [<path>…]gitdiff[<options>] <commit>...<commit> [--] [<path>…]gitdiff[<options>] <blob> <blob>gitdiff[<options>]--no-index[--] <path> <path> [<pathspec>…]
BESCHREIBUNG
Zeigt Unterschiede zwischen dem Arbeitsverzeichnis und dem Index oder einem Baum, Unterschiede zwischen dem Index und einem Baum, Unterschiede zwischen zwei Bäumen, durch einen Merge entstandene Unterschiede, Unterschiede zwischen zwei Blob-Objekten oder Unterschiede zwischen zwei Dateien auf der Festplatte an.
gitdiff[<optionen>] [--] [<pfad>...]-
Diese Form dient zur Anzeige der Änderungen, die Sie relativ zum Index (Staging-Bereich für den nächsten Commit) vorgenommen haben. Mit anderen Worten, die Unterschiede sind das, was Sie Git zum weiteren Hinzufügen zum Index mitteilen könnten, aber noch nicht getan haben. Sie können diese Änderungen mit git-add[1] zum Staging-Bereich hinzufügen.
gitdiff[<optionen>]--no-index[--] <pfad> <pfad> [<pathspec>...]-
Diese Form dient zum Vergleich der gegebenen zwei Pfade auf dem Dateisystem. Sie können die Option
--no-indexweglassen, wenn Sie den Befehl in einem von Git verwalteten Arbeitsverzeichnis ausführen und mindestens ein Pfad außerhalb des Arbeitsverzeichnisses liegt, oder wenn Sie den Befehl außerhalb eines von Git verwalteten Arbeitsverzeichnisses ausführen. Diese Form impliziert--exit-code. Wenn beide Pfade auf Verzeichnisse zeigen, können zusätzliche Pfadselektoren angegeben werden. Diese begrenzen die in der Differenz enthaltenen Dateien. Alle solchen Pfadselektoren müssen relativ sein, da sie für beide Seiten des Diffs gelten. gitdiff[<optionen>]--cached[--merge-base] [<commit>] [--] [<pfad>...]-
Diese Form dient zur Anzeige der Änderungen, die Sie für den nächsten Commit relativ zum genannten <commit> zum Staging-Bereich hinzugefügt haben. Typischerweise möchten Sie den Vergleich mit dem letzten Commit, also wenn Sie keinen <commit> angeben, wird standardmäßig
HEADverwendet. WennHEADnicht existiert (z. B. bei ungeborenen Branches) und <commit> nicht angegeben ist, werden alle Änderungen im Staging-Bereich angezeigt.--stagedist ein Synonym für--cached.Wenn
--merge-baseangegeben ist, wird anstelle von <commit> die Merge-Basis von <commit> undHEADverwendet.gitdiff--cached--merge-baseAist äquivalent zugitdiff--cached$(gitmerge-baseAHEAD). gitdiff[<optionen>] [--merge-base] <commit> [--] [<pfad>...]-
Diese Form dient zur Anzeige der Änderungen, die Sie in Ihrem Arbeitsverzeichnis relativ zum genannten <commit> vorgenommen haben. Sie können
HEADverwenden, um es mit dem letzten Commit zu vergleichen, oder einen Branch-Namen, um mit der Spitze eines anderen Branches zu vergleichen.Wenn
--merge-baseangegeben ist, wird anstelle von <commit> die Merge-Basis von <commit> undHEADverwendet.gitdiff--merge-baseAist äquivalent zugitdiff$(gitmerge-baseAHEAD). gitdiff[<optionen>] [--merge-base] <commit> <commit> [--] [<pfad>...]-
Dies dient zur Anzeige der Unterschiede zwischen zwei beliebigen <commit>.
Wenn
--merge-baseangegeben ist, wird die Merge-Basis der beiden Commits für die "Vorher"-Seite verwendet.gitdiff--merge-baseABist äquivalent zugitdiff$(gitmerge-baseAB)B. gitdiff[<optionen>] <commit> <commit>...<commit> [--] [<pfad>...]-
Diese Form dient zur Anzeige der Ergebnisse eines Merge-Commits. Der zuerst genannte <commit> muss der Merge selbst sein; die folgenden zwei oder mehr Commits sollten seine Eltern sein. Praktische Wege, um den gewünschten Satz von Revisionen zu erzeugen, sind die Verwendung der Suffixe
@und^!. WennAein Merge-Commit ist, dann ergebengitdiffAA^@,gitdiffA^!undgitshowAalle denselben kombinierten Diff. gitdiff[<optionen>] <commit>..<commit> [--] [<pfad>...]-
Dies ist ein Synonym für die frühere Form (ohne
..) zur Anzeige der Unterschiede zwischen zwei beliebigen <commit>. Wenn <commit> auf einer Seite weggelassen wird, hat dies den gleichen Effekt, als ob stattdessenHEADverwendet würde. gitdiff[<optionen>] <commit>...<commit> [--] [<pfad>...]-
Diese Form dient zur Anzeige der Unterschiede im Branch, der den zweiten <commit> enthält und bis zu ihm reicht, beginnend bei einem gemeinsamen Vorfahren beider <commit>.
gitdiffA...Bist äquivalent zugitdiff$(gitmerge-baseAB)B. Sie können einen der <commit> weglassen, was den gleichen Effekt hat, als ob stattdessenHEADverwendet würde.
Nur für den Fall, dass Sie etwas Exotisches tun: Es sollte beachtet werden, dass alle <commit> in der obigen Beschreibung, außer im Fall --merge-base und in den letzten beiden Formen, die ..-Schreibweisen verwenden, beliebige <tree> sein können. Ein Baum von Interesse ist derjenige, auf den der Verweis namens AUTO_MERGE zeigt, der von der ort-Merge-Strategie geschrieben wird, wenn Merge-Konflikte auftreten (siehe git-merge[1]). Der Vergleich des Arbeitsverzeichnisses mit AUTO_MERGE zeigt die bisher von Ihnen zur Behebung von Textkonflikten vorgenommenen Änderungen an (siehe Beispiele unten).
Eine vollständigere Liste der Möglichkeiten, <commit> zu schreiben, finden Sie im Abschnitt "SPECIFYING REVISIONS" in gitrevisions[7]. Allerdings geht es bei diff um den Vergleich zweier Endpunkte, nicht von Bereichen, und die Bereichsschreibweisen (<commit>..<commit> und <commit>...<commit>) bedeuten keinen Bereich im Sinne des Abschnitts "SPECIFYING RANGES" in gitrevisions[7].
OPTIONEN
-p-u--patch-
Erzeugt einen Patch (siehe Generieren von Patch-Text mit -p). Dies ist die Standardeinstellung.
-s--no-patch-
Unterdrückt jegliche Ausgabe der Diff-Maschinerie. Nützlich für Befehle wie
gitshow, die standardmäßig den Patch anzeigen, um ihre Ausgabe zu unterdrücken, oder um die Wirkung von Optionen wie--patch,--stat, die früher auf der Befehlszeile in einem Alias standen, aufzuheben. -U<n>--unified=<n>-
Generiert Diffs mit <n> Zeilen Kontext anstelle der üblichen drei. Beinhaltet
--patch. --output=<datei>-
Ausgabe in eine bestimmte Datei anstelle von stdout.
--output-indicator-new=<zeichen>--output-indicator-old=<zeichen>--output-indicator-context=<zeichen>-
Legt das Zeichen fest, das verwendet wird, um neue, alte oder Kontextzeilen im generierten Patch anzuzeigen. Normalerweise sind dies
+,-und ' '. --raw-
Erzeugt die Differenz im Rohformat.
--patch-with-raw-
Synonym für
-p--raw. --indent-heuristic-
Aktiviert die Heuristik, die Diff-Hunk-Grenzen verschiebt, um Patches leichter lesbar zu machen. Dies ist der Standard.
--no-indent-heuristic-
Deaktiviert die Einrückungsheuristik.
--minimal-
Verwendet zusätzliche Zeit, um sicherzustellen, dass der kleinstmögliche Diff erzeugt wird.
--patience-
Generiert einen Diff mit dem "Patience Diff"-Algorithmus.
--histogram-
Generiert einen Diff mit dem "Histogramm Diff"-Algorithmus.
--anchored=<text>-
Generiert einen Diff mit dem "Anchored Diff"-Algorithmus.
Diese Option kann mehrfach angegeben werden.
Wenn eine Zeile sowohl in der Quelle als auch im Ziel existiert, nur einmal vorkommt und mit <text> beginnt, versucht dieser Algorithmus zu verhindern, dass sie als Löschung oder Hinzufügung in der Ausgabe erscheint. Er verwendet intern den "Patience Diff"-Algorithmus.
--diff-algorithm=(patience|minimal|histogram|myers)-
Wählt einen Diff-Algorithmus aus. Die Varianten sind wie folgt:
defaultmyers-
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.
Wenn Sie beispielsweise die Variable
diff.algorithmauf einen anderen Wert als den Standardwert konfiguriert haben und den Standardwert verwenden möchten, müssen Sie die Option--diff-algorithm=defaultverwenden. --stat[=<breite>[,<name-breite>[,<anzahl>]]]-
Erzeugt eine Diff-Statistik. Standardmäßig wird so viel Platz wie nötig für den Dateinamen-Teil verwendet, der Rest für den Grafik-Teil. Die maximale Breite ist standardmäßig die Terminalbreite oder 80 Spalten, wenn nicht mit einem Terminal verbunden, und kann durch <breite> überschrieben werden. Die Breite des Dateinamen-Teils kann durch Angabe einer weiteren Breite <name-breite> nach einem Komma oder durch Setzen von
diff.statNameWidth=<name-breite> begrenzt werden. Die Breite des Grafik-Teils kann durch Verwendung von--stat-graph-width=<grafik-breite> oder durch Setzen vondiff.statGraphWidth=<grafik-breite> begrenzt werden. Die Verwendung von--statoder--stat-graph-widthbeeinflusst alle Befehle, die eine Statistikgrafik erzeugen, während das Setzen vondiff.statNameWidthoderdiff.statGraphWidthgitformat-patchnicht beeinflusst. Durch Angabe eines dritten Parameters <anzahl> können Sie die Ausgabe auf die ersten <anzahl> Zeilen begrenzen, gefolgt von ..., wenn es mehr gibt.Diese Parameter können auch einzeln mit
--stat-width=<width>,--stat-name-width=<name-width> und--stat-count=<count> eingestellt werden. --compact-summary-
Gibt eine komprimierte Zusammenfassung von erweiterten Kopfzeileninformationen aus, wie z. B. Dateierstellungen oder -löschungen ("new" oder "gone", optional
+lbei Symlinks) und Modusänderungen (+xoder-xzum Hinzufügen oder Entfernen des ausführbaren Bits) im Diffstat. Die Informationen werden zwischen dem Dateinamen-Teil und dem Grafik-Teil platziert. Beinhaltet--stat. --numstat-
Ähnlich wie
--stat, zeigt aber die Anzahl der hinzugefügten und gelöschten Zeilen in Dezimaldarstellung und den Pfadnamen ohne Abkürzung an, um ihn maschinenfreundlicher zu machen. Für Binärdateien werden zwei-ausgegeben, anstatt00anzuzeigen. --shortstat-
Gibt nur die letzte Zeile des
--statFormats aus, die die Gesamtzahl der geänderten Dateien sowie die Anzahl der hinzugefügten und gelöschten Zeilen enthält. -X[<param>,...]--dirstat[=<param>,...]-
Gibt die Verteilung des relativen Änderungsanteils für jedes Unterverzeichnis aus. Das Verhalten von
--dirstatkann durch Übergabe einer kommagetrennten Liste von Parametern angepasst werden. Die Standardwerte werden durch die Konfigurationsvariablediff.dirstatgesteuert (siehe git-config[1]). Folgende 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 daschanges-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
cumulativedie Summe der angezeigten Prozentsätze 100 % überschreiten kann. Das Standardverhalten (nicht kumulativ) kann mit dem Parameternoncumulativeangegeben 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: Folgendes zählt geänderte Dateien, ignoriert aber Verzeichnisse mit weniger als 10 % des gesamten Anteils an geänderten Dateien und akkumuliert die Zählungen von Unterverzeichnissen in den übergeordneten Verzeichnissen:
--dirstat=files,10,cumulative. --cumulative-
Synonym für
--dirstat=cumulative. --dirstat-by-file[=<param>,...]-
Synonym für
--dirstat=files,<param>,.... --summary-
Gibt eine komprimierte Zusammenfassung von erweiterten Kopfzeileninformationen aus, wie z. B. Erstellungen, Umbenennungen und Modusänderungen.
--patch-with-stat-
Synonym für
-p--stat. -z-
Wenn
--raw,--numstat,--name-onlyoder--name-statusangegeben wurde, werden Pfadnamen nicht verunstaltet und NUL-Zeichen als Feldtrenner verwendet.Ohne diese Option werden Pfadnamen mit "ungewöhnlichen" Zeichen gemäß der Beschreibung der Konfigurationsvariable
core.quotePath(siehe git-config[1]) maskiert. --name-only-
Zeigt nur den Namen jeder geänderten Datei im Post-Image-Tree an. Die Dateinamen sind oft in UTF-8 kodiert. Weitere Informationen finden Sie in der Diskussion über die Kodierung in der Handbuchseite git-log[1].
--name-status-
Zeigt nur die Namen und den Status jeder geänderten Datei an. Siehe die Beschreibung der Option
--diff-filter, was die Statusbuchstaben bedeuten. Genau wie--name-onlysind die Dateinamen oft in UTF-8 kodiert. --submodule[=<format>]-
Gibt an, wie Unterschiede in Submodulen angezeigt werden. Wenn
--submodule=shortangegeben ist, wird das Formatshortverwendet. Dieses Format zeigt nur die Namen der Commits am Anfang und Ende des Bereichs an. Wenn--submoduleoder--submodule=logangegeben ist, wird das Formatlogverwendet. Dieses Format listet die Commits im Bereich auf, wie es git-submodule[1]summarytut. Wenn--submodule=diffangegeben ist, wird das Formatdiffverwendet. Dieses Format zeigt eine Inline-Differenz der Änderungen in den Submodul-Inhalten zwischen dem Commit-Bereich an. Standardmäßig wirddiff.submoduleoder das Formatshortverwendet, wenn die Konfigurationsoption nicht gesetzt ist. --color[=<when>]-
Zeigt eine farbige Differenz an.
--color(d. h. ohne=<when>) ist dasselbe wie--color=always. <when> kann einer vonalways,neveroderautosein. Es kann durch die Konfigurationseinstellungencolor.uiundcolor.diffgeändert werden. --no-color-
Schaltet farbige Differenzen aus. Dies kann verwendet werden, um Konfigurationseinstellungen zu überschreiben. Es ist dasselbe wie
--color=never. --color-moved[=<modus>]-
Verschobene Codezeilen werden anders eingefärbt. Dies kann durch die Konfigurationseinstellung
diff.colorMovedgeändert werden. Der <modus> ist standardmäßigno, wenn die Option nicht gegeben ist, undzebra, wenn die Option ohne Modus gegeben ist. Der Modus muss einer der folgenden sein:no-
Verschobene Zeilen werden nicht hervorgehoben.
default-
Ist ein Synonym für
zebra. Dies kann sich in Zukunft zu einem sinnvollere Modus ändern. plain-
Jede Zeile, die an einer Stelle hinzugefügt und an einer anderen Stelle entfernt wurde, wird mit
color.diff.newMovedgefärbt. Ebenso wirdcolor.diff.oldMovedfür entfernte Zeilen verwendet, die an anderer Stelle im Diff hinzugefügt wurden. Dieser Modus erkennt jede verschobene Zeile, ist aber bei der Überprüfung nicht sehr nützlich, um festzustellen, ob ein Codeblock ohne Permutation verschoben wurde. blocks-
Blöcke von verschobenem Text von mindestens 20 alphanumerischen Zeichen werden gierig erkannt. Die erkannten Blöcke werden mit der Farbe
color.diff.(old|new)Movedgefärbt. Benachbarte Blöcke können nicht voneinander unterschieden werden. zebra-
Blöcke von verschobenem Text werden wie im Modus
blockserkannt. Die Blöcke werden entweder mit der Farbecolor.diff.(old|new)Movedodercolor.diff.(old|new)MovedAlternativegefärbt. Der Wechsel zwischen den beiden Farben zeigt an, dass ein neuer Block erkannt wurde. dimmed-zebra-
Ähnlich wie
zebra, aber es wird eine zusätzliche Dämpfung uninteressanter Teile von verschobenem Code durchgeführt. Die Randlinien zweier benachbarter Blöcke gelten als interessant, der Rest als uninteressant.dimmed_zebraist ein veraltetes Synonym.
--no-color-moved-
Verschiebungserkennung ausschalten. Dies kann verwendet werden, um Konfigurationseinstellungen zu überschreiben. Es ist dasselbe wie
--color-moved=no. --color-moved-ws=<modus>,...-
Dies konfiguriert, wie Whitespace beim Erkennen von Verschiebungen für
--color-movedignoriert wird. Es kann durch die Konfigurationseinstellungdiff.colorMovedWSgesetzt werden. Diese Modi können als kommagetrennte Liste angegeben werdenno-
Ignoriert keine Leerzeichen bei der Verschiebungserkennung.
ignore-space-at-eol-
Ignoriert Änderungen an Leerzeichen am Zeilenende.
ignore-space-change-
Ignoriert Änderungen an der Leerzeichenmenge. Dies ignoriert Leerzeichen am Zeilenende und betrachtet alle anderen Sequenzen von einem oder mehreren Leerzeichen als äquivalent.
ignore-all-space-
Ignoriert Leerzeichen beim Vergleich von Zeilen. Dies ignoriert Unterschiede, auch wenn eine Zeile Leerzeichen enthält, während die andere Zeile keine hat.
allow-indentation-change-
Ignoriert zunächst jegliche Leerzeichen bei der Verschiebungserkennung, gruppiert dann die verschobenen Codeblöcke nur dann zu einem Block, wenn die Änderung der Leerzeichen pro Zeile gleich ist. Dies ist mit den anderen Modi nicht kompatibel.
--no-color-moved-ws-
Ignoriert keine Leerzeichen bei der Verschiebungserkennung. Dies kann verwendet werden, um Konfigurationseinstellungen zu überschreiben. Es ist dasselbe wie
--color-moved-ws=no. --word-diff[=<modus>]-
Standardmäßig werden Wörter durch Leerzeichen getrennt; siehe
--word-diff-regexunten. Der <mode> ist standardmäßigplainund muss einer der folgenden sein:color-
Hebt geänderte Wörter nur mit Farben hervor. Beinhaltet
--color. plain-
Zeigt Wörter als [
-entfernt-] und{. Versucht nicht, die Begrenzer zu escapen, falls sie im Eingabetext vorkommen, daher kann die Ausgabe mehrdeutig sein.hinzugefügt} porcelain-
Verwendet ein spezielles zeilenbasiertes Format, das für die Skriptverarbeitung bestimmt ist. Hinzugefügte/entfernte/unveränderte Laufwerke werden im üblichen einheitlichen Diff-Format ausgegeben, beginnend mit einem
+/-/` ` Zeichen am Anfang der Zeile und sich bis zum Ende der Zeile erstreckend. Zeilenumbrüche im Eingabetext werden durch eine Tilde~auf einer eigenen Zeile dargestellt. none-
Deaktiviert die Wort-Diff-Funktion erneut.
Beachten Sie, dass trotz des Namens des ersten Modus Farben verwendet werden, um die geänderten Teile in allen Modi hervorzuheben, wenn sie aktiviert sind.
--word-diff-regex=<regex>-
Verwendet <regex>, um zu entscheiden, was ein Wort ist, anstatt Wortfolgen von Nicht-Leerzeichen als Wort zu betrachten. Beinhaltet auch
--word-diff, es sei denn, es war bereits aktiviert.Jede nicht überlappende Übereinstimmung des <regex> wird als Wort betrachtet. Alles zwischen diesen Übereinstimmungen wird als Leerzeichen betrachtet und ignoriert(!) für die Zwecke der Differenzfindung. Möglicherweise möchten Sie |[
^[:space:]] an Ihre regulären Ausdrücke anhängen, um sicherzustellen, dass sie alle Nicht-Leerzeichen-Zeichen abdecken. Eine Übereinstimmung, die einen Zeilenumbruch enthält, wird stummgeschaltet(!) am Zeilenumbruch gekürzt.Zum Beispiel wird
--word-diff-regex=.jedes Zeichen als Wort behandeln und dementsprechend Unterschiede Zeichen für Zeichen anzeigen.Der Regex kann auch über einen Diff-Treiber oder eine Konfigurationsoption gesetzt werden, siehe gitattributes[5] oder git-config[1]. Die explizite Angabe überschreibt jeden Diff-Treiber oder jede Konfigurationseinstellung. Diff-Treiber überschreiben Konfigurationseinstellungen.
--color-words[=<regex>]-
Entspricht
--word-diff=colorplus (wenn ein Regex angegeben wurde)--word-diff-regex=<regex>. --no-renames-
Umbenennungserkennung deaktivieren, auch wenn die Konfigurationsdatei dies standardmäßig vorgibt.
--rename-empty--no-rename-empty-
Ob leere Blobs als Umbenennungsquelle verwendet werden sollen.
--check-
Warnt, wenn Änderungen Konfliktmarkierungen oder Leerzeichenfehler einführen. Was als Leerzeichenfehler gilt, wird durch die Konfiguration
core.whitespacegesteuert. Standardmäßig gelten nachgestellte Leerzeichen (einschließlich Zeilen, die nur aus Leerzeichen bestehen) und ein Leerzeichen, dem unmittelbar ein Tabulatorzeichen im anfänglichen Einzug der Zeile folgt, als Leerzeichenfehler. Beendet mit einem nicht-null-Status, wenn Probleme gefunden werden. Nicht kompatibel mit--exit-code. --ws-error-highlight=<art>-
Hebt Leerzeichenfehler in den
context-,old- odernew-Zeilen des Diffs hervor. Mehrere Werte werden durch Kommas getrennt,nonesetzt vorherige Werte zurück,defaultsetzt die Liste aufnewzurück undallist eine Abkürzung fürold,new,context. Wenn diese Option nicht angegeben wird und die Konfigurationsvariablediff.wsErrorHighlightnicht gesetzt ist, werden nur Leerzeichenfehler innew-Zeilen hervorgehoben. Die Leerzeichenfehler werden mitcolor.diff.whitespacegefärbt. --full-index-
Zeigt anstelle der ersten paar Zeichen die vollständigen Blob-Objekt-Namen vor und nach der Änderung in der "index"-Zeile an, wenn die Patch-Format-Ausgabe generiert wird.
--binary-
Zusätzlich zu
--full-indexwird ein binärer Diff ausgegeben, der mitgit-applyangewendet werden kann. Beinhaltet--patch. --abbrev[=<n>]-
Anstatt den vollständigen 40-Byte-Hexadezimalnamen eines Objekts im diff-raw-Format und in den Kopfzeilen des diff-tree-Formats anzuzeigen, wird der kürzeste Präfix angezeigt, der mindestens <n> Hexadezimalziffern lang ist und das Objekt eindeutig identifiziert. Im diff-patch-Ausgabeformat hat
--full-indexhöhere Priorität, d.h. wenn--full-indexangegeben ist, werden vollständige Blob-Namen unabhängig von--abbrevangezeigt. Eine nicht standardmäßige Anzahl von Ziffern kann mit--abbrev=<n> angegeben werden. -B[<n>][/<m>]--break-rewrites[=[<n>][/<m>]]-
Zerlegen Sie vollständige Umschreibungsänderungen in Paare aus Löschung und Erstellung. Dies dient zwei Zwecken
Es beeinflusst die Art und Weise, wie eine Änderung, die einer vollständigen Umschreibung einer Datei entspricht, nicht als eine Reihe von Löschungen und Einfügungen, die mit sehr wenigen passenden Textzeilen als Kontext vermischt sind, sondern als eine einzelne Löschung des alten und eine einzelne Einfügung des neuen dargestellt wird. Die Zahl <m> steuert diesen Aspekt der Option
-B(standardmäßig 60%).-B/70%gibt an, dass weniger als 30% des Originals im Ergebnis verbleiben müssen, damit Git dies als vollständige Umschreibung betrachtet (andernfalls wird der resultierende Patch eine Reihe von Löschungen und Einfügungen mit Kontextzeilen sein).Wenn mit
-Mverwendet, wird eine vollständig umgeschriebene Datei auch als Quelle einer Umbenennung betrachtet (normalerweise betrachtet-Mnur eine verschwundene Datei als Quelle einer Umbenennung). Die Zahl <n> steuert diesen Aspekt der Option-B(standardmäßig 50%).-B20%gibt an, dass eine Änderung mit Hinzufügungen und Löschungen im Verhältnis zu 20% oder mehr der Dateigröße als mögliche Quelle für eine Umbenennung in eine andere Datei in Betracht gezogen werden kann. -M[<n>]--find-renames[=<n>]-
Erkennt Umbenennungen. Wenn <n> angegeben ist, ist es ein Schwellenwert für den Ähnlichkeitsindex (d.h. die Menge an Hinzufügungen/Löschungen im Verhältnis zur Dateigröße). Zum Beispiel bedeutet
-M90%, dass Git ein Lösch-/Hinzufügepaar als Umbenennung betrachten sollte, wenn mehr als 90 % der Datei unverändert geblieben sind. Ohne ein %-Zeichen wird die Zahl als Bruch mit einem Dezimalpunkt davor gelesen. D.h.,-M5wird zu 0,5 und ist somit dasselbe wie-M50%. Ebenso ist-M05dasselbe wie-M5%. Um die Erkennung auf exakte Umbenennungen zu beschränken, verwenden Sie-M100%. Der Standard-Ähnlichkeitsindex ist 50 %. -C[<n>]--find-copies[=<n>]-
Erkennt auch Kopien sowie Umbenennungen. Siehe auch
--find-copies-harder. Wenn <n> angegeben ist, hat es die gleiche Bedeutung wie bei-M<n>. --find-copies-harder-
Aus Leistungsgründen erkennt die Option
-Cstandardmäßig Kopien nur dann, wenn die Originaldatei der Kopie im selben Änderungssatz geändert wurde. Dieses Flag bewirkt, dass der Befehl auch unveränderte Dateien als Kandidaten für die Quelle einer Kopie untersucht. Dies ist eine sehr aufwendige Operation für große Projekte, daher sollte sie mit Vorsicht verwendet werden. Die Angabe von mehr als einer-COption hat die gleiche Wirkung. -D--irreversible-delete-
Unterdrückt die Vorabinformationen für Löschungen, d.h. gibt nur den Header aus, aber nicht den Unterschied zwischen der Vorabinformation und
/dev/null. Der resultierende Patch ist nicht dafür bestimmt, mitpatchodergitapplyangewendet zu werden; dies ist ausschließlich für Personen gedacht, die sich nur auf die Überprüfung des Textes nach der Änderung konzentrieren möchten. Darüber hinaus fehlen offensichtlich genügend Informationen, um einen solchen Patch umgekehrt anzuwenden, selbst manuell, daher der Name der Option.Wenn zusammen mit
-Bverwendet, werden auch die Vorabinformationen im Löschteil eines Lösch-/Erstellungspaares unterdrückt. -l<num>-
Die Optionen
-Mund-Cbeinhalten einige vorbereitende Schritte, die Teilmengen von Umbenennungen/Kopien kostengünstig erkennen können, gefolgt von einem vollständigen Fallback-Teil, der alle verbleibenden ungepaarten Ziele mit allen relevanten Quellen vergleicht. (Für Umbenennungen sind nur verbleibende ungepaarte Quellen relevant; für Kopien sind alle ursprünglichen Quellen relevant.) Für N Quellen und Ziele ist dieser vollständige Vergleich O(N^2). Diese Option verhindert, dass der vollständige Teil der Umbenennungs-/Kopiererkennung ausgeführt wird, wenn die Anzahl der beteiligten Quell-/Ziel-Dateien die angegebene Zahl überschreitet. Standardmäßig wirddiff.renameLimitverwendet. Beachten Sie, dass ein Wert von 0 als unbegrenzt behandelt wird. --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]-
Wählen Sie nur Dateien aus, die hinzugefügt (
A), kopiert (C), gelöscht (D), geändert (M), umbenannt (R), deren Typ geändert wurde (T), die nicht zusammengeführt (U), unbekannt (X) oder deren Paarung unterbrochen wurde (B). Jede Kombination von Filterzeichen (einschließlich keiner) kann verwendet werden. Wenn*(Alles oder Nichts) zur Kombination hinzugefügt wird, werden alle Pfade ausgewählt, wenn eine Datei vorhanden ist, die anderen Kriterien im Vergleich entspricht; wenn keine Datei vorhanden ist, die anderen Kriterien entspricht, wird nichts ausgewählt.Außerdem können diese Großbuchstaben kleingeschrieben werden, um auszuschließen. Z.B. schließt
--diff-filter=adhinzugefügte und gelöschte Pfade aus.Beachten Sie, dass nicht alle Diffs alle Typen enthalten können. Kopierte und umbenannte Einträge können beispielsweise nicht erscheinen, wenn die Erkennung für diese Typen deaktiviert ist.
-S<string>-
Sucht nach Unterschieden, die die Anzahl der Vorkommen des angegebenen <string> (d.h. Hinzufügung/Löschung) in einer Datei ändern. Gedacht für den Gebrauch durch Skripte.
Es ist nützlich, wenn Sie nach einem exakten Codeblock (wie einer Struktur) suchen und die Historie dieses Blocks seit seiner Entstehung erfahren möchten: Verwenden Sie die Funktion iterativ, um den interessanten Block aus der Vorabinformation zurück in
-Seinzuspeisen und fahren Sie fort, bis Sie die allererste Version des Blocks erhalten.Binärdateien werden ebenfalls durchsucht.
-G<regex>-
Sucht nach Unterschieden, deren Patch-Text hinzugefügte/entfernte Zeilen enthält, die mit <regex> übereinstimmen.
Um den Unterschied zwischen
-S<regex>--pickaxe-regexund-G<regex> zu verdeutlichen, betrachten Sie einen Commit mit dem folgenden Diff in derselben Datei+ return frotz(nitfol, two->ptr, 1, 0); ... - hit = frotz(nitfol, mf2.ptr, 1, 0);
Während git log -G"frotz\(nitfol" diesen Commit anzeigt, git log -S"frotz\(nitfol" --pickaxe-regex nicht (da sich die Anzahl der Vorkommen dieses Strings nicht geändert hat).
Sofern
--textnicht angegeben ist, werden Patches von Binärdateien ohne Textkonvertierungsfilter ignoriert.Weitere Informationen finden Sie im Eintrag pickaxe in gitdiffcore[7].
--find-object=<object-id>-
Sucht nach Unterschieden, die die Anzahl der Vorkommen des angegebenen Objekts ändern. Ähnlich wie bei
-S, nur dass sich das Argument unterscheidet, da es nicht nach einem bestimmten String, sondern nach einer bestimmten Objekt-ID sucht.Das Objekt kann ein Blob oder ein Submodul-Commit sein. Es impliziert die Option
-tingit-log, um auch Bäume zu finden. --pickaxe-all-
Wenn
-Soder-Geine Änderung findet, werden alle Änderungen in diesem Änderungssatz angezeigt, nicht nur die Dateien, die die Änderung am <string> enthalten. --pickaxe-regex-
Behandelt den an
-Sübergebenen <string> als erweiterte POSIX-regulären Ausdruck zur Übereinstimmung. -O<orderfile>-
Steuert die Reihenfolge, in der Dateien in der Ausgabe erscheinen. Dies überschreibt die Konfigurationsvariable
diff.orderFile(siehe git-config[1]). Umdiff.orderFileabzubrechen, verwenden Sie-O/dev/null.Die Ausgabereihenfolge wird durch die Reihenfolge der Glob-Muster in <orderfile> bestimmt. Alle Dateien mit Pfadnamen, die mit dem ersten Muster übereinstimmen, werden zuerst ausgegeben, alle Dateien mit Pfadnamen, die mit dem zweiten Muster (aber nicht mit dem ersten) übereinstimmen, werden als nächstes ausgegeben, und so weiter. Alle Dateien mit Pfadnamen, die keinem Muster entsprechen, werden zuletzt ausgegeben, als ob ein implizites Muster für alles am Ende der Datei stünde. Wenn mehrere Pfadnamen den gleichen Rang haben (sie stimmen mit demselben Muster, aber keinen früheren Mustern überein), ist ihre relative Ausgabereihenfolge die normale.
<orderfile> wird wie folgt analysiert
-
Leere Zeilen werden ignoriert und können als Trennzeichen zur besseren Lesbarkeit verwendet werden.
-
Zeilen, die mit einem Hash ("
#") beginnen, werden ignoriert, sodass sie für Kommentare verwendet werden können. Fügen Sie einen Backslash ("\") am Anfang des Musters hinzu, wenn es mit einem Hash beginnt. -
Jede andere Zeile enthält ein einzelnes Muster.
Muster haben die gleiche Syntax und Semantik wie Muster, die für
fnmatch(3) ohne das FlagFNM_PATHNAMEverwendet werden, mit der Ausnahme, dass ein Pfadname auch dann mit einem Muster übereinstimmt, wenn das Entfernen einer beliebigen Anzahl der letzten Pfadkomponenten mit dem Muster übereinstimmt. Zum Beispiel passt das Muster "foo*bar" auf "fooasdfbar" und "foo/bar/baz/asdf", aber nicht auf "foobarx". -
--skip-to=<datei>--rotate-to=<datei>-
Verwerfen Sie die Dateien vor der benannten <file> aus der Ausgabe (d.h. skip to) oder verschieben Sie sie ans Ende der Ausgabe (d.h. rotate to). Diese Optionen wurden hauptsächlich für die Verwendung des Befehls
gitdifftoolentwickelt und sind möglicherweise sonst nicht sehr nützlich. -R-
Vertauschen Sie zwei Eingaben; d.h., zeigen Sie Unterschiede vom Index oder der Festplattendatei zu Baum-Inhalten an.
--relative[=<pfad>]--no-relative-
Wenn von einem Unterverzeichnis des Projekts aus ausgeführt, kann es angewiesen werden, Änderungen außerhalb des Verzeichnisses auszuschließen und Pfadnamen relativ dazu mit dieser Option anzuzeigen. Wenn Sie sich nicht in einem Unterverzeichnis befinden (z.B. in einem Bare-Repository), können Sie angeben, welches Unterverzeichnis die Ausgabe relativ dazu machen soll, indem Sie <path> als Argument angeben.
--no-relativekann verwendet werden, um sowohl die Konfigurationsoptiondiff.relativeals auch die vorherige Option--relativezu widerrufen. -a--text-
Behandeln Sie alle Dateien als Text.
--ignore-cr-at-eol-
Ignoriert Wagenrücklauf am Zeilenende beim Vergleichen.
--ignore-space-at-eol-
Ignoriert Änderungen an Leerzeichen am Zeilenende.
-b--ignore-space-change-
Ignoriert Änderungen an der Leerzeichenmenge. Dies ignoriert Leerzeichen am Zeilenende und betrachtet alle anderen Sequenzen von einem oder mehreren Leerzeichen als äquivalent.
-w--ignore-all-space-
Ignoriert Leerzeichen beim Vergleich von Zeilen. Dies ignoriert Unterschiede, auch wenn eine Zeile Leerzeichen enthält, während die andere Zeile keine hat.
--ignore-blank-lines-
Ignoriert Änderungen, deren Zeilen alle leer sind.
-I<regex>--ignore-matching-lines=<regex>-
Ignoriert Änderungen, deren alle Zeilen mit <regex> übereinstimmen. Diese Option kann mehr als einmal angegeben werden.
--inter-hunk-context=<nummer>-
Zeigt den Kontext zwischen Diff-Hunks bis zur angegebenen Anzahl von <n> Zeilen an und fasst so nahe beieinander liegende Hunks zusammen. Standard ist
diff.interHunkContextoder 0, wenn die Konfigurationsoption nicht gesetzt ist. -W--function-context-
Zeigt die gesamte Funktion als Kontextzeilen für jede Änderung an. Die Funktionsnamen werden auf die gleiche Weise bestimmt, wie
gitdiffPatch-Hunk-Header erstellt (siehe "Defining a custom hunk-header" in gitattributes[5]). --exit-code-
Lässt das Programm mit Codes ähnlich wie
diff(1) beenden. Das heißt, es beendet sich mit 1, wenn es Unterschiede gab, und 0 bedeutet keine Unterschiede. --quiet-
Schaltet die gesamte Ausgabe des Programms ab. Impliziert
--exit-code. Deaktiviert die Ausführung externer Diff-Helfer, deren Exit-Code nicht vertrauenswürdig ist, d.h. ihre jeweilige Konfigurationsoptiondiff.trustExitCodeoderdiff.<driver>.trustExitCodeoder die UmgebungsvariableGIT_EXTERNAL_DIFF_TRUST_EXIT_CODEist false. --ext-diff-
Ermöglicht die Ausführung eines externen Diff-Helferprogramms. Wenn Sie einen externen Diff-Treiber mit gitattributes[5] einrichten, müssen Sie diese Option mit git-log[1] und ähnlichen Befehlen verwenden.
--no-ext-diff-
Deaktiviert externe Diff-Treiber.
--textconv--no-textconv-
Erlaubt (oder verbietet) die Ausführung externer Textkonvertierungsfilter beim Vergleichen von Binärdateien. Siehe gitattributes[5] für Details. Da Textkonvertierungsfilter typischerweise eine unidirektionale Konvertierung sind, ist der resultierende Diff für den menschlichen Gebrauch geeignet, kann aber nicht angewendet werden. Aus diesem Grund sind Textkonvertierungsfilter standardmäßig nur für git-diff[1] und git-log[1] aktiviert, aber nicht für git-format-patch[1] oder Diff-Plumbing-Befehle.
--ignore-submodules[=(none|untracked|dirty|all)]-
Ignoriert Änderungen an Submodulen bei der Diff-Erzeugung.
allist die Standardeinstellung. Die Verwendung vonnoneberücksichtigt das Submodul als geändert, wenn es entweder nicht verfolgte oder geänderte Dateien enthält oder seinHEADvom im Superprojekt aufgezeichneten Commit abweicht, und kann verwendet werden, um jegliche Einstellungen der Optionignorein git-config[1] oder gitmodules[5] zu überschreiben. Wennuntrackedverwendet wird, werden Submodule nicht als dirty betrachtet, wenn sie nur nicht verfolgten Inhalt enthalten (sie werden aber immer noch auf geänderten Inhalt gescannt). Die Verwendung vondirtyignoriert alle Änderungen am Arbeitsverzeichnis von Submodulen, nur Änderungen an den im Superprojekt gespeicherten Commits werden angezeigt (dies war das Verhalten bis 1.7.0). Die Verwendung vonallverbirgt alle Änderungen an Submodulen. --src-prefix=<präfix>-
Zeigt den angegebenen Quell-<prefix> anstelle von "a/" an.
--dst-prefix=<präfix>-
Zeigt den angegebenen Ziel-<prefix> anstelle von "b/" an.
--no-prefix-
Zeigt keine Quell- oder Zielpräfixe an.
--default-prefix-
Verwendet die Standard-Quell- und Zielpräfixe ("a/" und "b/"). Dies überschreibt Konfigurationsvariablen wie
diff.noprefix,diff.srcPrefix,diff.dstPrefixunddiff.mnemonicPrefix(siehe git-config[1]). --line-prefix=<präfix>-
Fügt jeder Zeile der Ausgabe einen zusätzlichen <prefix> voran.
--ita-invisible-in-index-
Standardmäßig erscheinen Einträge, die mit
gitadd-Nhinzugefügt wurden, als existierende leere Datei ingitdiffund als neue Datei ingitdiff--cached. Diese Option bewirkt, dass der Eintrag als neue Datei ingitdiffund als nicht vorhanden ingitdiff--cachederscheint. Diese Option kann mit--ita-visible-in-indexrückgängig gemacht werden. Beide Optionen sind experimentell und können in zukünftigen Versionen entfernt werden. - --max-depth=<Tiefe>
-
Für jeden auf der Kommandozeile angegebenen Pfadspec wird maximal bis zur Tiefe von <depth> Ebenen von Verzeichnissen abgestiegen. Ein Wert von
-1bedeutet keine Begrenzung. Kann nicht mit Wildcards im Pfadspec kombiniert werden. Bei einem Baum, derfoo/bar/bazenthält, zeigt die folgende Liste die Übereinstimmungen, die von jeder Optionsmenge generiert werden-
--max-depth=0--foo:foo -
--max-depth=1--foo:foo/bar -
--max-depth=1--foo/bar:foo/bar/baz -
--max-depth=1--foofoo/bar:foo/bar/baz -
--max-depth=2--foo:foo/bar/baz
Wenn kein Pfadspec angegeben ist, wird die Tiefe gemessen, als ob alle Top-Level-Einträge angegeben wären. Beachten Sie, dass dies anders ist, als von der Wurzel aus zu messen, da
--max-depth=0immer nochfoozurückgeben würde. Dies ermöglicht es Ihnen, die Tiefe weiterhin zu begrenzen, während Sie eine Teilmenge der Top-Level-Einträge anfordern.Beachten Sie, dass diese Option nur für Diffs zwischen Baum-Objekten unterstützt wird, nicht gegen den Index oder den Arbeitsbaum.
-
Für eine detailliertere Erklärung dieser gängigen Optionen siehe auch gitdiffcore[7].
-1--base-2--ours-3--theirs-
Vergleiche den Arbeitsbaum mit
-
der "Basis"-Version (Stufe #1) bei Verwendung von
-1oder--base, -
"unser Zweig" (Stufe #2) bei Verwendung von
-2oder--oursoder -
"ihr Zweig" (Stufe #3) bei Verwendung von
-3oder--theirs.
Der Index enthält diese Stufen nur für nicht zusammengeführte Einträge, d.h. während der Konfliktlösung. Siehe git-read-tree[1] Abschnitt "3-Wege-Zusammenführung" für detaillierte Informationen.
-
-0-
Unterdrücke die Diff-Ausgabe für nicht zusammengeführte Einträge und zeige nur "Nicht zusammengeführt" an. Kann nur verwendet werden, wenn der Arbeitsbaum mit dem Index verglichen wird.
- <pfad>...
-
Die Parameter <pfad> werden, wenn sie angegeben werden, verwendet, um den Vergleich auf die genannten Pfade zu beschränken (Sie können Verzeichnisnamen angeben und erhalten einen Vergleich für alle Dateien darunter).
Rohausgabeformat
Das Rohausgabeformat von git-diff-index, git-diff-tree, git-diff-files und git diff --raw ist sehr ähnlich.
Diese Befehle vergleichen alle zwei Mengen von Dingen; was verglichen wird, unterscheidet sich
git-diff-index<tree-ish>-
vergleicht den <tree-ish> und die Dateien auf dem Dateisystem.
git-diff-index--cached<tree-ish>-
vergleicht den <tree-ish> und den Index.
git-diff-tree[-r] <tree-ish-1> <tree-ish-2> [<muster>...]-
vergleicht die durch die beiden Argumente benannten Bäume.
git-diff-files[<muster>...]-
vergleicht den Index und die Dateien auf dem Dateisystem.
Der Befehl git-diff-tree beginnt seine Ausgabe mit dem Hash dessen, was verglichen wird. Danach drucken alle Befehle eine Ausgabezeile pro geänderter Datei.
Eine Ausgabezeile ist so formatiert
in-place edit :100644 100644 bcd1234 0123456 M file0 copy-edit :100644 100644 abcd123 1234567 C68 file1 file2 rename-edit :100644 100644 abcd123 1234567 R86 file1 file3 create :000000 100644 0000000 1234567 A file4 delete :100644 000000 1234567 0000000 D file5 unmerged :000000 000000 0000000 0000000 U file6
Das heißt, von links nach rechts
-
ein Doppelpunkt.
-
Modus für "src"; 000000 bei Erstellung oder nicht zusammengeführt.
-
ein Leerzeichen.
-
Modus für "dst"; 000000 bei Löschung oder nicht zusammengeführt.
-
ein Leerzeichen.
-
sha1 für "src"; 0{40} bei Erstellung oder nicht zusammengeführt.
-
ein Leerzeichen.
-
sha1 für "dst"; 0{40} bei Löschung, nicht zusammengeführt oder "Arbeitsbaum stimmt nicht mit Index überein".
-
ein Leerzeichen.
-
Status, gefolgt von optionaler "score"-Nummer.
-
ein Tabulator oder ein NUL, wenn die Option
-zverwendet wird. -
Pfad für "src"
-
ein Tabulator oder ein NUL, wenn die Option
-zverwendet wird; existiert nur für C oder R. -
Pfad für "dst"; existiert nur für C oder R.
-
ein LF oder ein NUL, wenn die Option
-zverwendet wird, um den Datensatz zu beenden.
Mögliche Statusbuchstaben sind
-
A: Hinzufügen einer Datei -
C: Kopie einer Datei in eine neue -
D: Löschung einer Datei -
M: Änderung des Inhalts oder Modus einer Datei -
R: Umbenennung einer Datei -
T: Änderung des Dateityps (reguläre Datei, symbolischer Link oder Submodul) -
U: Datei ist nicht zusammengeführt (Sie müssen die Zusammenführung abschließen, bevor sie committet werden kann) -
X: "unbekannter" Änderungstyp (höchstwahrscheinlich ein Fehler, bitte melden Sie ihn)
Die Statusbuchstaben C und R werden immer von einem Score gefolgt (der den Prozentsatz der Ähnlichkeit zwischen Quelle und Ziel der Verschiebung oder Kopie angibt). Der Statusbuchstabe M kann von einem Score gefolgt werden (der den Prozentsatz der Unähnlichkeit angibt) für Datei-Rewrites.
Die sha1 für "dst" wird als lauter Nullen angezeigt, wenn eine Datei auf dem Dateisystem nicht mit dem Index übereinstimmt.
Beispiel
:100644 100644 5be4a4a 0000000 M file.c
Ohne die Option -z werden Pfadnamen mit "ungewöhnlichen" Zeichen wie für die Konfigurationsvariable core.quotePath erklärt (siehe git-config[1]) in Anführungszeichen gesetzt. Bei Verwendung von -z wird der Dateiname unverändert ausgegeben und die Zeile wird mit einem NUL-Byte beendet.
Diff-Format für Zusammenführungen
git-diff-tree, git-diff-files und git-diff --raw können die Option -c oder --cc verwenden, um Diff-Ausgaben auch für Merge-Commits zu erzeugen. Die Ausgabe unterscheidet sich vom oben beschriebenen Format wie folgt
-
Es gibt einen Doppelpunkt für jeden Elternteil
-
Es gibt mehr "src"-Modi und "src"-sha1
-
Der Status sind verkettete Statuszeichen für jeden Elternteil
-
Keine optionalen "score"-Nummern
-
Tabulator-getrennte Pfadnamen der Datei
Für -c und --cc wird nur der Ziel- oder Endpfad angezeigt, auch wenn die Datei in irgendeiner Seite der Historie umbenannt wurde. Mit --combined-all-paths wird der Name des Pfads in jedem Elternteil gefolgt vom Namen des Pfads im Merge-Commit angezeigt.
Beispiele für -c und --cc ohne --combined-all-paths
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c ::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh ::100644 100644 100644 e07d6c5 9042e82 ee91881 RR phooey.c
Beispiele, wenn --combined-all-paths zu -c oder --cc hinzugefügt wird
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c desc.c desc.c ::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM foo.sh bar.sh bar.sh ::100644 100644 100644 e07d6c5 9042e82 ee91881 RR fooey.c fuey.c phooey.c
Beachten Sie, dass die *kombinierte Diff* nur Dateien auflistet, die von allen Elternteilen geändert wurden.
Patch-Text mit -p generieren
Das Ausführen von git-diff[1], git-log[1], git-show[1], git-diff-index[1], git-diff-tree[1] oder git-diff-files[1] mit der Option -p erzeugt Patch-Text. Sie können die Erstellung von Patch-Text über die Umgebungsvariablen GIT_EXTERNAL_DIFF und GIT_DIFF_OPTS (siehe git[1]) sowie das Attribut diff (siehe gitattributes[5]) anpassen.
Was die Option -p erzeugt, unterscheidet sich geringfügig vom traditionellen Diff-Format
-
Es wird eine "git diff"-Kopfzeile vorangestellt, die wie folgt aussieht
diff --git a/file1 b/file2
Die Dateinamen
a/undb/sind gleich, es sei denn, Umbenennung/Kopie ist beteiligt. Insbesondere wird selbst bei einer Erstellung oder Löschung/dev/null*nicht* anstelle der Dateinamena/oderb/verwendet.Wenn eine Umbenennung/Kopie beteiligt ist, zeigen
file1undfile2den Namen der Quelldatei der Umbenennung/Kopie und den Namen der Datei an, die die Umbenennung/Kopie erzeugt, bzw. -
Es folgen eine oder mehrere erweiterte Kopfzeilen
oldmode<mode>newmode<mode>deletedfilemode<mode>newfilemode<mode>copyfrom<path>copyto<path>renamefrom<path>renameto<path>similarityindex<number>dissimilarityindex<number>index<hash>..<hash> <mode>Dateimodus <mode> wird als 6-stellige Oktalzahlen einschließlich des Dateityps und der Dateiberechtigungsbits ausgegeben.
Pfadnamen in erweiterten Kopfzeilen enthalten nicht die Präfixe
a/undb/.Der Ähnlichkeitsindex ist der Prozentsatz unveränderter Zeilen, und der Unähnlichkeitsindex ist der Prozentsatz geänderter Zeilen. Es handelt sich um eine abgerundete Ganzzahl, gefolgt von einem Prozentzeichen. Der Ähnlichkeitsindex von 100% ist also für zwei gleiche Dateien reserviert, während 100% Unähnlichkeit bedeutet, dass keine Zeile aus der alten Datei in die neue gelangt ist.
Die Indexzeile enthält die Blob-Objektnamen vor und nach der Änderung. Der <mode> wird angegeben, wenn sich der Dateimodus nicht ändert; andernfalls geben separate Zeilen den alten und den neuen Modus an.
-
Pfadnamen mit "ungewöhnlichen" Zeichen werden wie für die Konfigurationsvariable
core.quotePatherklärt zitiert (siehe git-config[1]). -
Alle
file1-Dateien in der Ausgabe beziehen sich auf Dateien vor dem Commit, und allefile2-Dateien beziehen sich auf Dateien nach dem Commit. Es ist falsch, jede Änderung sequenziell auf jede Datei anzuwenden. Dieser Patch vertauscht zum Beispiel a und bdiff --git a/a b/b rename from a rename to b diff --git a/b b/a rename from b rename to a
-
Hunk-Kopfzeilen erwähnen den Namen der Funktion, auf die sich der Hunk bezieht. Siehe "Defining a custom hunk-header" in gitattributes[5] für Details, wie dies für bestimmte Sprachen angepasst werden kann.
Kombiniertes Diff-Format
Jeder diff-generierende Befehl kann die Option -c oder --cc verwenden, um einen kombinierten Diff bei der Anzeige eines Merges zu erzeugen. Dies ist das Standardformat bei der Anzeige von Merges mit git-diff[1] oder git-show[1]. Beachten Sie auch, dass Sie jeder dieser Befehle eine geeignete Option --diff-merges geben können, um die Generierung von Diffs in einem bestimmten Format zu erzwingen.
Ein "kombiniertes Diff"-Format sieht wie folgt aus
diff --combined describe.c
index fabadb8,cc95eb0..4866510
--- a/describe.c
+++ b/describe.c
@@@ -98,20 -98,12 +98,20 @@@
return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
}
- static void describe(char *arg)
-static void describe(struct commit *cmit, int last_one)
++static void describe(char *arg, int last_one)
{
+ unsigned char sha1[20];
+ struct commit *cmit;
struct commit_list *list;
static int initialized = 0;
struct commit_name *n;
+ if (get_sha1(arg, sha1) < 0)
+ usage(describe_usage);
+ cmit = lookup_commit_reference(sha1);
+ if (!cmit)
+ usage(describe_usage);
+
if (!initialized) {
initialized = 1;
for_each_ref(get_name);
-
Es wird eine "git diff"-Kopfzeile vorangestellt, die wie folgt aussieht (wenn die Option
-cverwendet wird)diff --combined file
oder wie folgt (wenn die Option
--ccverwendet wird)diff --cc file
-
Es folgen eine oder mehrere erweiterte Kopfzeilen (dieses Beispiel zeigt einen Merge mit zwei Elternteilen)
index<hash>,<hash>..<hash>mode<mode>,<mode>..<mode>newfilemode<mode>deletedfilemode<mode>,<mode>Die Zeile
mode<mode>,<mode>..<mode> erscheint nur, wenn mindestens einer der <mode> sich vom Rest unterscheidet. Erweiterte Kopfzeilen mit Informationen über erkannte Inhaltsbewegungen (Umbenennungen und Kopiererkennung) sind für die Diff-Erstellung von zwei <tree-ish> konzipiert und werden nicht für das kombinierte Diff-Format verwendet. -
Es folgt eine Zwei-Zeilen-Kopfzeile für von-Datei/zu-Datei
--- a/file +++ b/file
Ähnlich der Zwei-Zeilen-Kopfzeile für das traditionelle einheitliche Diff-Format wird
/dev/nullverwendet, um erstellte oder gelöschte Dateien zu signalisieren.Wenn jedoch die Option --combined-all-paths bereitgestellt wird, erhalten Sie anstelle einer Zwei-Zeilen-Von-Datei/Zu-Datei-Kopfzeile eine N+1-Zeilen-Von-Datei/Zu-Datei-Kopfzeile, wobei N die Anzahl der Elternteile im Merge-Commit ist
--- a/file --- a/file --- a/file +++ b/file
Dieses erweiterte Format kann nützlich sein, wenn die Umbenennungs- oder Kopiererkennung aktiv ist, damit Sie den ursprünglichen Namen der Datei in verschiedenen Elternteilen sehen können.
-
Die Chunk-Kopfzeile ist modifiziert, um zu verhindern, dass Leute sie versehentlich an
patch-p1weitergeben. Das kombinierte Diff-Format wurde für die Überprüfung von Merge-Commit-Änderungen erstellt und war nicht für die Anwendung gedacht. Die Änderung ist ähnlich der Änderung in der erweiterten Index-Kopfzeile@@@ <from-file-range> <from-file-range> <to-file-range> @@@
Es gibt (Anzahl der Elternteile + 1)
@-Zeichen in der Chunk-Kopfzeile für das kombinierte Diff-Format.
Im Gegensatz zum traditionellen einheitlichen Diff-Format, das zwei Dateien A und B mit einer einzelnen Spalte mit - (Minus – erscheint in A, aber entfernt in B), + (Plus – fehlt in A, aber zu B hinzugefügt) oder " " (Leerzeichen – unverändert) Präfix anzeigt, vergleicht dieses Format zwei oder mehr Dateien file1, file2,... mit einer Datei X und zeigt, wie sich X von jeder fileN unterscheidet. Eine Spalte für jede fileN wird der Ausgabenzeile vorangestellt, um zu vermerken, wie sich die Zeile von X von ihr unterscheidet.
Ein --Zeichen in Spalte N bedeutet, dass die Zeile in fileN vorkommt, aber nicht im Ergebnis. Ein +-Zeichen in Spalte N bedeutet, dass die Zeile im Ergebnis vorkommt und fileN diese Zeile nicht hat (mit anderen Worten, die Zeile wurde hinzugefügt, aus der Sicht dieses Elternteils).
Im obigen Beispiel-Output wurde die Funktionssignatur von beiden Dateien geändert (daher zwei --Entfernungen von beiden file1 und file2, plus ++, was bedeutet, dass eine hinzugefügte Zeile weder in file1 noch in file2 vorkommt). Außerdem sind acht andere Zeilen von file1 gleich, erscheinen aber nicht in file2 (daher mit + präfigiert).
Wenn von git diff-tree -c angezeigt, vergleicht es die Eltern eines Merge-Commits mit dem Merge-Ergebnis (d.h. file1..fileN sind die Eltern). Wenn von git diff-files -c angezeigt, vergleicht es die beiden unaufgelösten Eltern-Merges mit der Arbeitsbaumdatei (d.h. file1 ist Stage 2 aka "unsere Version", file2 ist Stage 3 aka "ihre Version").
Andere Diff-Formate
Die Option --summary beschreibt neu hinzugefügte, gelöschte, umbenannte und kopierte Dateien. Die Option --stat fügt einen diffstat(1)-Graphen zur Ausgabe hinzu. Diese Optionen können mit anderen Optionen wie -p kombiniert werden und sind für den menschlichen Gebrauch bestimmt.
Beim Anzeigen einer Änderung, die eine Umbenennung oder Kopie beinhaltet, formatiert die Ausgabe von --stat die Pfadnamen kompakt, indem gemeinsame Präfixe und Suffixe der Pfadnamen kombiniert werden. Zum Beispiel wird eine Änderung, die arch/i386/Makefile nach arch/x86/Makefile verschiebt und dabei 4 Zeilen ändert, wie folgt angezeigt
arch/{i386 => x86}/Makefile | 4 +--
Die Option --numstat liefert die diffstat(1)-Informationen, ist aber für eine einfachere maschinelle Verarbeitung konzipiert. Ein Eintrag in der Ausgabe von --numstat sieht so aus
1 2 README
3 1 arch/{i386 => x86}/Makefile
Das heißt, von links nach rechts
-
die Anzahl der hinzugefügten Zeilen;
-
ein Tabulator;
-
die Anzahl der gelöschten Zeilen;
-
ein Tabulator;
-
Pfadname (möglicherweise mit Umbenennungs-/Kopierinformationen);
-
ein Zeilenumbruch.
Wenn die Ausgabeoption -z wirksam ist, wird die Ausgabe wie folgt formatiert
1 2 README NUL 3 1 NUL arch/i386/Makefile NUL arch/x86/Makefile NUL
Das heißt
-
die Anzahl der hinzugefügten Zeilen;
-
ein Tabulator;
-
die Anzahl der gelöschten Zeilen;
-
ein Tabulator;
-
ein NUL (existiert nur, wenn umbenannt/kopiert);
-
Pfadname im Vorbild;
-
ein NUL (existiert nur, wenn umbenannt/kopiert);
-
Pfadname im Nachbild (existiert nur, wenn umbenannt/kopiert);
-
ein NUL.
Das zusätzliche NUL vor dem Pfadnamen im Umbenennungsfall ermöglicht Skripten, die die Ausgabe lesen, zu erkennen, ob der aktuell gelesene Datensatz ein Einzelpfad-Datensatz oder ein Umbenennungs-/Kopierdatensatz ist, ohne vorauszulesen. Nach dem Lesen von hinzugefügten und gelöschten Zeilen würde das Lesen bis zu NUL den Pfadnamen ergeben, aber wenn dies NUL ist, zeigt der Datensatz zwei Pfade an.
BEISPIELE
- Verschiedene Möglichkeiten, Ihren Arbeitsbaum zu überprüfen
-
$ git diff (1) $ git diff --cached (2) $ git diff HEAD (3) $ git diff AUTO_MERGE (4)
-
Änderungen im Arbeitsbaum, die noch nicht für den nächsten Commit vorbereitet sind.
-
Änderungen zwischen dem Index und Ihrem letzten Commit; was Sie committen würden, wenn Sie
gitcommitohne die Option-aausführen. -
Änderungen im Arbeitsbaum seit Ihrem letzten Commit; was Sie committen würden, wenn Sie
gitcommit-aausführen -
Änderungen im Arbeitsbaum, die Sie bisher zur Lösung von Textkonflikten vorgenommen haben.
-
- Vergleich mit beliebigen Commits
-
$ git diff test (1) $ git diff HEAD -- ./test (2) $ git diff HEAD^ HEAD (3)
-
Anstatt die Spitze des aktuellen Zweigs zu verwenden, vergleichen Sie mit der Spitze des "test"-Zweigs.
-
Anstatt mit der Spitze des "test"-Zweigs zu vergleichen, vergleichen Sie mit der Spitze des aktuellen Zweigs, beschränken Sie den Vergleich jedoch auf die Datei "test".
-
Vergleichen Sie die Version vor dem letzten Commit und den letzten Commit.
-
- Vergleich von Zweigen
-
$ git diff topic master (1) $ git diff topic..master (2) $ git diff topic...master (3)
-
Änderungen zwischen den Spitzen des Topic- und des Master-Zweigs.
-
Dasselbe wie oben.
-
Änderungen, die auf dem Master-Zweig aufgetreten sind, seit der Topic-Zweig von ihm abzweigte.
-
- Begrenzung der Diff-Ausgabe
-
$ git diff --diff-filter=MRC (1) $ git diff --name-status (2) $ git diff arch/i386 include/asm-i386 (3)
-
Zeige nur Modifikationen, Umbenennungen und Kopien, aber keine Hinzufügungen oder Löschungen.
-
Zeige nur Namen und die Art der Änderung, aber keine tatsächliche Diff-Ausgabe.
-
Beschränke die Diff-Ausgabe auf benannte Unterverzeichnisse.
-
- Bearbeiten der Diff-Ausgabe
-
$ git diff --find-copies-harder -B -C (1) $ git diff -R (2)
-
Verbrauche zusätzliche Rechenzeit, um Umbenennungen, Kopien und vollständige Rewrites zu finden (sehr teuer).
-
Diff-Ausgabe in umgekehrter Reihenfolge.
-
KONFIGURATION
Alles unterhalb dieser Zeile in diesem Abschnitt wird selektiv aus der git-config[1]-Dokumentation übernommen. Der Inhalt ist derselbe wie dort zu finden.
diff.autoRefreshIndex-
Wenn
gitdiffverwendet wird, um Arbeitsbaumdateien zu vergleichen, betrachte reine Statusänderungen nicht als geändert. Führe stattdessen stillschweigendgitupdate-index--refreshaus, um die zwischengespeicherten Statusinformationen für Pfade zu aktualisieren, deren Inhalte im Arbeitsbaum mit den Inhalten im Index übereinstimmen. Diese Option ist standardmäßig auftruegesetzt. Beachten Sie, dass dies nurgitdiffPorcelain betrifft und nicht niedrigstufigediff-Befehle wiegitdiff-files. diff.dirstat-
Eine durch Kommas getrennte Liste von
--dirstat-Parametern, die das Standardverhalten der Option--dirstatfürgitdiffund ähnliche Befehle festlegen. Die Standardwerte können auf der Befehlszeile überschrieben werden (mit--dirstat=<param>,...). Die Fallback-Standardwerte (wenn sie nicht durchdiff.dirstatgeändert werden) sindchanges,noncumulative,3. Die folgenden Parameter sind verfügbarchanges-
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 daschanges-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
cumulativedie Summe der angezeigten Prozentsätze 100 % überschreiten kann. Das Standardverhalten (nicht kumulativ) kann mit dem Parameternoncumulativeangegeben werden. - <grenze>
-
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: Folgendes zählt geänderte Dateien und ignoriert dabei Verzeichnisse mit weniger als 10 % des gesamten geänderten Dateivolumens und akkumuliert die Zählungen von Unterverzeichnissen in den übergeordneten Verzeichnissen:
files,10,cumulative. diff.statNameWidth-
Begrenzt die Breite des Dateinamens in der Ausgabe von
--stat. Wenn gesetzt, gilt dies für alle Befehle, die eine Ausgabe im Format--staterzeugen, mit Ausnahme vonformat-patch. diff.statGraphWidth-
Begrenzt die Breite des Graphen in der Ausgabe von
--stat. Wenn gesetzt, gilt dies für alle Befehle, die eine Ausgabe im Format--staterzeugen, mit Ausnahme vonformat-patch. diff.context-
Erzeugt 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 fusioniert dadurch nahe beieinander liegende Hunks. Dieser Wert dient als Standard für die Befehlszeilenoption
--inter-hunk-context. diff.external-
Wenn diese Konfigurationsvariable gesetzt ist, wird die Diff-Generierung nicht mit der internen Diff-Maschinerie durchgeführt, sondern mit dem angegebenen Befehl. Kann mit der Umgebungsvariable
GIT_EXTERNAL_DIFFüberschrieben werden. Der Befehl wird mit Parametern aufgerufen, wie in "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
truegesetzt ist, wird erwartet, dass der Befehldiff.externalden Exit-Code 0 zurückgibt, wenn er die Eingabedateien als gleich betrachtet, oder 1, wenn er sie als unterschiedlich betrachtet, wiediff(1). Wenn er auffalsegesetzt ist, was der Standard ist, wird erwartet, dass der Befehl unabhängig von der Gleichheit den Exit-Code0zurückgibt. Jeder andere Exit-Code führt dazu, dass Git einen fatalen Fehler meldet. diff.ignoreSubmodules-
Legt den Standardwert für
--ignore-submodulesfest. Beachten Sie, dass dies nurgitdiffPorcelain betrifft und nicht niedrigstufigediff-Befehle wiegitdiff-files.gitcheckoutundgitswitchberücksichtigen diese Einstellung auch bei der Meldung von uncommitted Änderungen. Das Setzen aufalldeaktiviert die Submodulzusammenfassung, die normalerweise vongitcommitundgitstatusangezeigt wird, wennstatus.submoduleSummarygesetzt ist, es sei denn, sie wird durch Verwendung der Befehlszeilenoption--ignore-submodulesüberschrieben. Diegitsubmodule-Befehle sind von dieser Einstellung nicht betroffen. Standardmäßig ist dies aufuntrackedgesetzt, sodass alle nicht verfolgten Submodule ignoriert werden. diff.mnemonicPrefix-
Wenn gesetzt, verwendet
gitdiffein Präfixpaar, das sich vom Standarda/undb/unterscheidet, je nachdem, was verglichen wird. Wenn diese Konfiguration aktiv ist, vertauscht die Ausgabe eines umgekehrten Diffs auch die Reihenfolge der Präfixegitdiff-
vergleicht den (I)ndex und den (A)rbeitsbaum;
gitdiffHEAD-
vergleicht einen (C)ommit und den (A)rbeitsbaum;
gitdiff--cached-
vergleicht einen (C)ommit und den (I)ndex;
gitdiffHEAD:<Datei1> <Datei2>-
vergleicht ein (O)bjekt und eine (A)rbeitsbaum-Entität;
gitdiff--no-index<a> <b>-
vergleicht zwei Nicht-Git-Elemente <a> und <b>.
diff.noPrefix-
Wenn gesetzt, zeigt
gitdiffkein Quell- oder Zielpräfix an. diff.srcPrefix-
Wenn gesetzt, verwendet
gitdiffdieses Quellpräfix. Standardmäßig ist diesa/. diff.dstPrefix-
Wenn gesetzt, verwendet
gitdiffdieses Zielpräfix. Standardmäßig ist diesb/. diff.relative-
Wenn auf
truegesetzt, zeigtgitdiffkeine Ä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
-Ofür Details. Wenndiff.orderFileein relativer Pfadname ist, wird er relativ zur Spitze des Arbeitsbaums behandelt. diff.renameLimit-
Die Anzahl der Dateien, die im erschöpfenden Teil der Kopier-/Umbenennungserkennung berücksichtigt werden sollen; entspricht der Option
gitdiff-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
falsegesetzt, ist die Umbenennungserkennung deaktiviert. Wenn auftruegesetzt, ist die grundlegende Umbenennungserkennung aktiviert. Wenn aufcopiesodercopygesetzt, erkennt Git auch Kopien. Standardmäßig ist dies auftruegesetzt. Beachten Sie, dass dies nurgitdiffPorcelain wie git-diff[1] und git-log[1] betrifft und nicht niedrigstufige Befehle wie git-diff-files[1]. diff.suppressBlankEmpty-
Ein boolescher Wert, der das Standardverhalten unterdrückt, ein Leerzeichen vor jeder leeren Ausgabelinie zu drucken. Standardmäßig ist dies
false. diff.submodule-
Gibt das Format an, in dem Unterschiede in Submodulen angezeigt werden. Das Format
shortzeigt nur die Namen der Commits am Anfang und Ende des Bereichs an. Das Formatloglistet die Commits im Bereich auf, wie es git-submodule[1]summarytut. Das Formatdiffzeigt einen Inline-Diff der geänderten Inhalte des Submoduls. Standardmäßig ist dies aufshortgesetzt. diff.wordRegex-
Ein POSIX Extended Regular Expression, der verwendet wird, um zu bestimmen, was ein "Wort" ist, wenn Wort-für-Wort-Unterschiede berechnet werden. Zeichenfolgen, die mit dem regulären Ausdruck übereinstimmen, sind "Wörter", alle anderen Zeichen sind **ignorierbare** Leerzeichen.
diff.<treiber>.command-
Der benutzerdefinierte Diff-Treiberbefehl. Weitere Informationen finden Sie unter gitattributes[5].
diff.<treiber>.trustExitCode-
Wenn dieser boolesche Wert auf
truegesetzt ist, wird erwartet, dass der Befehldiff.<treiber>.commandden Exit-Code 0 zurückgibt, wenn er die Eingabedateien als gleich betrachtet, oder 1, wenn er sie als unterschiedlich betrachtet, wiediff(1). Wenn er auffalsegesetzt 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.<treiber>.xfuncname-
Der reguläre Ausdruck, den der Diff-Treiber verwenden soll, um den Hunk-Header zu erkennen. Ein eingebautes Muster kann ebenfalls verwendet werden. Weitere Informationen finden Sie unter gitattributes[5].
diff.<treiber>.binary-
Setzen Sie diese Option auf
true, damit der Diff-Treiber Dateien als binär behandelt. Weitere Informationen finden Sie unter gitattributes[5]. diff.<treiber>.textconv-
Der Befehl, den der Diff-Treiber aufrufen soll, um die textkonvertierte Version einer Datei zu erzeugen. Das Ergebnis der Konvertierung wird zur Erzeugung eines menschenlesbaren Diffs verwendet. Weitere Informationen finden Sie unter gitattributes[5].
diff.<treiber>.wordRegex-
Der reguläre Ausdruck, den der Diff-Treiber verwenden soll, um Wörter in einer Zeile zu trennen. Weitere Informationen finden Sie unter gitattributes[5].
diff.<treiber>.cachetextconv-
Setzen Sie diese Option auf
true, damit der Diff-Treiber die Textkonvertierungsergebnisse zwischenspeichert. Weitere Informationen finden Sie unter gitattributes[5]. diff.indentHeuristic-
Setzen Sie diese Option auf
false, um die Standardheuristiken zu deaktivieren, die Diff-Hunk-Grenzen verschieben, um Patches leichter lesbar zu machen. diff.algorithm-
Wählt einen Diff-Algorithmus aus. Die Varianten sind wie folgt:
defaultmyers-
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,oldodernewdes Diffs hervor. Mehrere Werte werden durch Kommas getrennt,nonesetzt vorherige Werte zurück,defaultsetzt die Liste aufnewzurück, undallist eine Kurzform fürold,new,context. Die Leerzeichenfehler werden mitcolor.diff.whitespacegefärbt. Die Befehlszeilenoption--ws-error-highlight=<art> überschreibt diese Einstellung. diff.colorMoved-
Wenn auf einen gültigen <modus> oder einen Wert von
truegesetzt, werden verschobene Zeilen in einem Diff anders gefärbt. Details zu gültigen Modi finden Sie unter--color-moved. Wenn einfach auftruegesetzt, wird der Standardmodus verwendet. Wenn auffalsegesetzt, werden verschobene Zeilen nicht gefärbt. diff.colorMovedWS-
Wenn verschobene Zeilen gefä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-wsin git-diff[1].
GIT
Teil der git[1] Suite