Ignorieren Sie alle Leerzeichen oder Zeilenumbrüche in git-diff
Lesezeit: 3 Minuten
Kamafeder
Ich habe dieselbe HTML-Datei auf zwei verschiedene Arten gerendert und möchte sie mit vergleichen git diffkümmern Ignorieren aller Leerzeichen, Tabulatoren, Zeilenumbrüche, Wagenrückläufeoder alles, was nicht unbedingt der Quellcode meiner Dateien ist.
aber wenn einige HTML-Tags alle in einer Zeile zusammengeklappt sind (anstatt eines pro Zeile und tabelliert) git-diff erkennen ist als Unterschied (während es für mich nicht ist).
<html><head><title>TITLE</title><meta ......
unterscheidet sich von
<html>
<head>
<title>TITLE</title>
<meta ......
Welche Option übersehe ich, um das zu erreichen, was ich brauche und bedrohe, als wäre es dasselbe?
Landys
git diff unterstützt den zeilen- oder wortweisen Vergleich von Dateien und unterstützt auch die Definition, was ein Wort ausmacht. Hier können Sie jedes Nicht-Leerzeichen als Wort definieren, um den Vergleich durchzuführen. Auf diese Weise werden alle Leerzeichen, einschließlich Leerzeichen, Tabulatoren, Zeilenumbrüche und Zeilenumbrüche, wie von Ihnen benötigt ignoriert.
Um dies zu erreichen, gibt es eine perfekte Option --word-diff-regexund stellen Sie es einfach ein --word-diff-regex=[^[:space:]]. Beziehen auf Dok für Details.
Es unterstreicht den Unterschied von TITLE und TI{+==+}TLE in den beiden Dateien in plain Modus wie folgt. Sie können auch angeben --word-diff=<mode> um Ergebnisse in verschiedenen Modi anzuzeigen. Das mode kann sein color, plain, porcelain und noneund mit plain als Standard.
Leider gibt es keinen Modus, der einen zeilenweisen Diff anzeigt, während der Wortdiff eingeschaltet ist.
– Robert Siemer
5. April 2016 um 14:18 Uhr
Befehl ausführen git diff --help gibt einige Optionen wie
--ignore-cr-at-eol
Ignore carriage-return at the end of line when doing a comparison.
--ignore-space-at-eol
Ignore changes in whitespace at EOL.
-b, --ignore-space-change
Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace
characters to be equivalent.
-w, --ignore-all-space
Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.
--ignore-blank-lines
Ignore changes whose lines are all blank.
Welche Sie nach Bedarf kombinieren können, hat der folgende Befehl für mich funktioniert
Dadurch werden Leerzeilen ignoriert, aber es wird nicht ignoriert, wenn Sie beispielsweise einen Zeilenumbruch hinzufügen, um aus einer Zeile zwei zu machen.
– Joshua Goldberg
7. Februar 2020 um 19:53 Uhr
Mudasir Razvi
git-diff vergleicht Dateien Zeile für Zeile
Es überprüft die erste Zeile Ihrer Datei1 mit der in Datei2, da sie nicht gleich sind, meldet es einen Fehler.
Das Ignorieren von Leerzeichen bedeutet, dass foo bar mit foobar übereinstimmt, wenn es sich in derselben Zeile befindet. Da sich Ihre Dateien in einer Zeile über mehrere Zeilen und in der anderen nur über eine Zeile erstrecken, unterscheiden sich die Dateien immer
Wenn Sie wirklich überprüfen möchten, ob die Dateien genau dieselben Zeichen enthalten, die keine Leerzeichen sind, können Sie Folgendes versuchen: