Verwenden eines alternativen Diff-Algorithmus in Git

Lesezeit: 3 Minuten

Benutzer-Avatar
John F. Miller

Da git ist für Quellcode ausgelegt, seine Vorgabe diff Algorithmus behandelt eine Linie als kleinste unteilbare Einheit.

Ich versuche, einige Markdown-Dateien zu bearbeiten, die in Spalte 80 umgebrochen sind. Das Hinzufügen eines Satzes kann dazu führen, dass der Rest des Absatzes als geändert markiert wird.

Gibt es eine Möglichkeit, Git einen Diff-Algorithmus verwenden zu lassen, der besser für Text geeignet ist? Ich brauche eine, die Wörter oder Sätze als unteilbare Einheiten und nicht als Zeilen behandelt?

Du könntest es versuchen git diff --word-diff stattdessen.

$ git diff --word-diff
diff --git a/test.txt b/test.txt
index 54585bb..a8cd97e 100644
--- a/test.txt
+++ b/test.txt
@@ -1,7 +1,7 @@
Because git is designed for source code, its diff algorithms {+are bibbity +}
{+bobbity boo+} treat a line as the minimum indivisible unit. I am trying to edit 
some markdown files that are word wrapped at column 80. Adding a sentence can 
cause the rest of the paragraph to be marked as changed.

Is there a way to have Git use a diff algorithm more suited to text? One that 
treats words or sentences as indivisible units rather then lines?
 No newline at end of file

Vielleicht suchen Sie word-diff

–word-diff[=<mode>]

Zeigen Sie ein Wort diff an, indem Sie das verwenden <mode> geänderte Wörter abzugrenzen. Standardmäßig werden Wörter durch Leerzeichen getrennt; siehe –word-diff-regex weiter unten. Das <mode> ist standardmäßig einfach und muss eines der folgenden sein:

Farbe

Markieren Sie geänderte Wörter nur mit Farben. Bedeutet –Farbe.

schmucklos

Wörter anzeigen als [-removed-] und {hinzugefügt}. Unternimmt keine Versuche, die Trennzeichen zu maskieren, wenn sie in der Eingabe erscheinen, sodass die Ausgabe mehrdeutig sein kann.

Porzellan

Verwenden Sie ein spezielles zeilenbasiertes Format, das für den Skriptverbrauch vorgesehen ist. Hinzugefügte/entfernte/unveränderte Läufe werden im üblichen einheitlichen Diff-Format gedruckt, beginnend mit +/-/
Zeichen am Zeilenanfang bis zum Zeilenende. Zeilenumbrüche in der Eingabe werden durch eine Tilde ~ in einer eigenen Zeile dargestellt.

keiner

Wortdiff wieder deaktivieren.

Beachten Sie, dass trotz des Namens des ersten Modus Farbe verwendet wird, um die geänderten Teile in allen Modi hervorzuheben, falls aktiviert.

http://git-scm.com/docs/git-diff

Benutzer-Avatar
Fallbash

Hier ist ein Beispiel für die Anpassung (aus dieser Frage). Standardmäßig geht –word-diff davon aus, dass ein Wort eine Folge von Nicht-Leerzeichen ist. Der folgende Befehl geht davon aus, dass ein Wort aus einem der folgenden Elemente besteht:

  1. Eine Zeichenfolge aus alphanumerischen Zeichen und Unterstrichen
  2. Ein einzelnes Nicht-Zeichen

Der Befehl:

git diff --color-words --word-diff-regex='[A-z0-9_]+|[^[:space:]]'

  • Das letzte Flag kann global gesetzt werden: git config --global diff.wordRegex '[A-z0-9_]+|[^[:space:]]'.

    – Tobus

    11. April 2013 um 8:00 Uhr

  • Oder git diff --color-words='[^[:space:]]|([[:alnum:]]|UTF_8_GUARD)+'

    – Tobias Kienzler

    8. Dezember 2015 um 13:46 Uhr

1158760cookie-checkVerwenden eines alternativen Diff-Algorithmus in Git

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy