Suche…
Syntax
-
git diff [options] [<commit>] [--] [<path>…]
-
git diff [options] --cached [<commit>] [--] [<path>…]
-
git diff [options] <commit> <commit> [--] [<path>…]
-
git diff [options] <blob> <blob>
-
git diff [options] [--no-index] [--] <path> <path>
Parameter
Parameter | Einzelheiten |
---|---|
-p, -u, --patch | Patch generieren |
-s, --no-patch | Differenzausgabe unterdrücken. Nützlich für Befehle wie git show , die den Patch standardmäßig --patch oder um den Effekt von --patch |
--roh | Generiere den Unterschied im Rohformat |
--diff-algorithmus = | Wählen Sie einen Diff-Algorithmus. Die Varianten sind wie folgt: myers , minimal , patience , histogram |
--Zusammenfassung | Ausgabe einer komprimierten Zusammenfassung erweiterter Header-Informationen wie Erstellung, Umbenennung und Modusänderung |
--name-only | Nur Namen der geänderten Dateien anzeigen |
--Name-Status | Namen und Status geänderter Dateien anzeigen Die häufigsten Status sind M (Modified), A (Hinzugefügt) und D (Gelöscht). |
--prüfen | Warnen, wenn Änderungen Konfliktmarken oder Whitespace-Fehler verursachen. Was als Whitespace-Fehler betrachtet wird, wird durch core.whitespace Konfiguration von core.whitespace gesteuert. Nachgestellte Leerzeichen (einschließlich Zeilen, die nur aus Leerzeichen bestehen) und ein Leerzeichen, auf das unmittelbar ein Tabulatorzeichen innerhalb des ersten Einzugs der Zeile folgt, werden standardmäßig als Leerzeichenfehler betrachtet. Wird mit einem Status ungleich Null beendet, wenn Probleme gefunden werden. Nicht kompatibel mit --exit-code |
- full-index | Zeigen Sie anstelle der ersten Handvoll Zeichen die vollständigen Pre- und Post-Image-Blob-Objektnamen in der "Index" -Zeile an, wenn Sie eine Patch-Format-Ausgabe generieren |
--binär | Zusätzlich zu --full-index kann ein binärer Diff ausgegeben werden, der mit git apply angewendet werden kann |
-ein Text | Alle Dateien als Text behandeln. |
--Farbe | Stellen Sie den Farbmodus ein. Verwenden --color=always also --color=always wenn Sie einen Unterschied auf weniger --color=always und die Farbe von --color=always möchten |
Zeigen Sie Unterschiede im Arbeitszweig
git diff
Daraufhin werden die nicht bereitgestellten Änderungen im aktuellen Zweig aus dem Commit davor angezeigt . Es wird nur die Änderungen gegenüber dem Index zeigen, was bedeutet , es zeigt , was Sie zum nächsten hinzufügen könnten begehen, haben aber nicht. Um diese Änderungen git add
, können Sie git add
.
Wenn eine Datei bereitgestellt wird, aber nach ihrer git diff
geändert wurde, zeigt git diff
die Unterschiede zwischen der aktuellen Datei und der bereitgestellten Version an.
Zeigt Unterschiede für bereitgestellte Dateien
git diff --staged
Dadurch werden die Änderungen zwischen dem vorherigen Commit und den aktuell bereitgestellten Dateien angezeigt.
HINWEIS: Sie können auch die folgenden Befehle verwenden, um dasselbe zu erreichen:
git diff --cached
Welches ist nur ein Synonym für - --staged
oder
git status -v
Dadurch werden die ausführlichen Einstellungen des status
ausgelöst.
Zeigen Sie sowohl gestaffelte als auch nicht bereitgestellte Änderungen an
Um alle inszenierten und nicht inszenierten Änderungen anzuzeigen, verwenden Sie:
git diff HEAD
HINWEIS: Sie können auch den folgenden Befehl verwenden:
git status -vv
Der Unterschied besteht darin, dass die Ausgabe des letzteren Ihnen tatsächlich anzeigt, welche Änderungen für das Commit bereitstehen und welche nicht.
Zeige Änderungen zwischen zwei Commits
git diff 1234abc..6789def # old new
Beispiel: Zeigen Sie die Änderungen der letzten 3 Commits an:
git diff @~3..@ # HEAD -3 HEAD
Hinweis: Die beiden Punkte (..) sind optional, sorgen jedoch für Klarheit.
Dadurch wird der Textunterschied zwischen den Commits angezeigt, unabhängig davon, wo sie sich im Baum befinden.
Verwenden von meld, um alle Änderungen im Arbeitsverzeichnis anzuzeigen
git difftool -t meld --dir-diff
zeigt die Änderungen des Arbeitsverzeichnisses an. Alternative,
git difftool -t meld --dir-diff [COMMIT_A] [COMMIT_B]
zeigt die Unterschiede zwischen zwei spezifischen Commits.
Zeigt Unterschiede für eine bestimmte Datei oder ein bestimmtes Verzeichnis
git diff myfile.txt
Zeigt die Änderungen zwischen dem vorherigen Commit der angegebenen Datei ( myfile.txt
) und der lokal geänderten Version an, die noch nicht bereitgestellt wurde.
Dies funktioniert auch für Verzeichnisse:
git diff documentation
Das obige zeigt die Änderungen zwischen dem vorherigen Commit aller Dateien im angegebenen Verzeichnis ( documentation/
) und den lokal modifizierten Versionen dieser Dateien, die noch nicht bereitgestellt wurden.
Um den Unterschied zwischen einer Version einer Datei in einem bestimmten Commit und der lokalen HEAD
Version zu zeigen, können Sie das Commit angeben, mit dem Sie vergleichen möchten:
git diff 27fa75e myfile.txt
Oder wenn Sie die Version zwischen zwei separaten Commits sehen möchten:
git diff 27fa75e ada9b57 myfile.txt
Um den Unterschied zwischen der durch den Hash ada9b57
angegebenen Version und dem letzten Commit für den Zweig my_branchname
für nur das relative Verzeichnis my_changed_directory/
, können Sie my_changed_directory/
tun:
git diff ada9b57 my_branchname my_changed_directory/
Anzeige eines Wortunterschieds für lange Zeilen
git diff [HEAD|--staged...] --word-diff
Anstatt die geänderten Zeilen anzuzeigen, werden Unterschiede innerhalb der Zeilen angezeigt. Zum Beispiel anstatt:
-Hello world
+Hello world!
Wenn die gesamte Zeile als geändert markiert ist, ändert word-diff
die Ausgabe in:
Hello [-world-]{+world!+}
Sie können die Marken [-
, -]
, {+
, +}
--word-diff=color
indem Sie --word-diff=color
oder --color-words
. Dies wird nur die Farbkodierung verwenden, um den Unterschied zu markieren:
Anzeigen einer dreifachen Zusammenführung einschließlich des gemeinsamen Vorfahren
git config --global merge.conflictstyle diff3
Legt den diff3
Stil als Standard fest: Anstelle des üblichen Formats in Konfliktbereichen werden die beiden Dateien angezeigt:
<<<<<<< HEAD
left
=======
right
>>>>>>> master
es wird einen zusätzlichen Abschnitt enthalten, der den ursprünglichen Text enthält (kommt vom gemeinsamen Vorfahren):
<<<<<<< HEAD
first
second
|||||||
first
=======
last
>>>>>>> master
Dieses Format erleichtert das Verständnis von Zusammenführungskonflikten, z. In diesem Fall wurde lokal second
hinzugefügt, während Remote first
und last
geändert wurde.
last
second
Die gleiche Auflösung wäre mit der Standardeinstellung viel schwieriger gewesen:
<<<<<<< HEAD
first
second
=======
last
>>>>>>> master
Zeigt Unterschiede zwischen der aktuellen Version und der letzten Version
git diff HEAD^ HEAD
Dies zeigt die Änderungen zwischen dem vorherigen Commit und dem aktuellen Commit.
Diff UTF-16-kodierte Text- und Binärplistendateien
Sie können UTF-16-kodierte Dateien unterscheiden (Beispiele für Lokalisierungszeichenfolgen für iOS und macOS), indem Sie angeben, wie git diese Dateien unterscheiden soll.
Fügen Sie Ihrer ~/.gitconfig
Datei Folgendes ~/.gitconfig
.
[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"
iconv
ist ein Programm zum Konvertieren verschiedener Kodierungen .
Bearbeiten oder erstellen Sie dann eine .gitattributes
Datei im Stammverzeichnis des Repositorys, in dem Sie sie verwenden möchten. Oder bearbeiten Sie einfach ~/.gitattributes
.
*.strings diff=utf16
Dadurch werden alle Dateien, die auf .strings
vor git diffs konvertiert.
Sie können ähnliche Aktionen für andere Dateien ausführen, die in Text konvertiert werden können.
Bei binären Plist-Dateien bearbeiten Sie .gitconfig
[diff "plist"]
textconv = plutil -convert xml1 -o -
und .gitattributes
*.plist diff=plist
Zweige vergleichen
Zeigen Sie die Änderungen zwischen der Spitze des new
und der Spitze des original
:
git diff original new # equivalent to original..new
Zeige alle Änderungen auf new
da es vom original
abgezweigt wurde:
git diff original...new # equivalent to $(git merge-base original new)..new
Verwenden Sie nur einen Parameter wie
git diff original
ist äquivalent zu
git diff original..KOPF
Zeige Änderungen zwischen zwei Zweigen
git diff branch1..branch2
Produzieren Sie einen Patch-kompatiblen Diff
Manchmal benötigen Sie nur einen Diff, um den Patch anzuwenden. Der reguläre git --diff
funktioniert nicht. Versuchen Sie es stattdessen:
git diff --no-prefix > some_file.patch
Dann können Sie es woanders umkehren:
patch -p0 < some_file.patch
Unterschied zwischen zwei Festschreibungen oder Zweigen
Unterschied zwischen zwei Zweigen anzeigen
git diff <branch1>..<branch2>
Unterschied zwischen zwei Zweigen anzeigen
git diff <commitId1>..<commitId2>
Diff mit aktuellem Zweig anzeigen
git diff <branch/commitId>
Um die Zusammenfassung der Änderungen anzuzeigen
git diff --stat <branch/commitId>
Um Dateien anzuzeigen, die sich nach einem bestimmten Commit geändert haben
git diff --name-only <commitId>
So zeigen Sie Dateien an, die sich von einem Zweig unterscheiden
git diff --name-only <branchName>
Um Dateien anzuzeigen, die sich nach einem bestimmten Commit in einem Ordner geändert haben
git diff --name-only <commitId> <folder_path>