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:

Beispiel für die Verwendung von git diff --color-words

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>


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow