Git diff -w ignoriert Leerzeichen nur am Anfang und Ende von Zeilen

366

Ich liebe git diff -wes, Leerzeichenunterschiede zu ignorieren. Aber ich habe gerade bemerkt, dass es sogar Leerzeichenunterschiede in der Mitte der Zeilen ignoriert. Wie kann ich nur Leerzeichenunterschiede ignorieren, die am Anfang (^) oder Ende ($) von Zeilen auftreten?

ma11hew28
quelle
31
Erwägen Sie git diff -bstattdessen zu verwenden?
Jonas Byström
5
"-b --ignore-space-change Ignoriert Änderungen in der Anzahl der Leerzeichen. Dies ignoriert Leerzeichen am Zeilenende und betrachtet alle anderen Sequenzen eines oder mehrerer Leerzeichen als gleichwertig."
Mowwwalker

Antworten:

450

Für die Verwendung am Zeilenende:

git diff --ignore-space-at-eol

Anstelle dessen, was Sie derzeit verwenden:

git diff -w (--ignore-all-space)

Für den Anfang der Linie ... Sie haben kein Glück, wenn Sie eine eingebaute Lösung wollen.

Wenn es Ihnen jedoch nichts ausmacht, sich die Hände schmutzig zu machen, gibt es irgendwo einen ziemlich alten Patch, der "--ignore-space-at-sol" unterstützt.

Fake Code Monkey Rashid
quelle
Danke, aber es funktioniert nicht, wenn Sie das Diff für ein externes Tool konfiguriert haben. Irgendwelche Ideen?
Adardesign
@adardesign, ich denke das müsste wohl im externen tool konfiguriert werden. Ich bin mir nicht sicher, ob es irgendetwas gibt, was Git tun kann, um das Diff ohne Whitespace-Änderungen zu präsentieren ... könnte jedoch falsch sein; Git ist ziemlich mächtig ...
Johnny
Das wäre schön, wenn es standardmäßig konfiguriert wäre. Ich meine -w oder -b oder --ignore-all-space. Es gibt eine Diskussion darüber unter stackoverflow.com/questions/7310033/…
Artyom
8
Ich stimme dem Vorschlag -b zu, da -w "abc def" und "abcdef" gleich behandelt, was ich selten will!
Richard Wiseman
3

Dies ist eine alte Frage, wird aber immer noch regelmäßig angezeigt / benötigt. Ich möchte Leser wie mich darauf hinweisen, dass Leerzeichen, wie in der Frage des OP erwähnt, nicht mit der Definition von Regex identisch sind, um Zeilenumbrüche, Tabulatoren und Leerzeichen einzuschließen - Git bittet Sie, explizit zu sein. Einige Optionen finden Sie hier: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Wie angegeben, git diff -boder git diff --ignore-space-changeLeerzeichen an den Zeilenenden werden ignoriert. Wenn Sie möchten, dass diese Einstellung Ihr Standardverhalten ist, fügt die folgende Zeile diese Absicht Ihrer .gitconfig-Datei hinzu, sodass der Leerzeichen an den Zeilenenden immer ignoriert wird:

git config --global core.whitespace trailing-space

In meinem Fall habe ich diese Frage gefunden, weil ich daran interessiert war, "Wagenrücklauf-Leerzeichenunterschiede" zu ignorieren, also brauchte ich Folgendes:

git diff --ignore-cr-at-eoloder git config --global core.whitespace cr-at-eolvon hier .

Sie können es auch nur für dieses Repo zum Standard machen , indem Sie den Parameter --global weglassen und die Einstellungsdatei für dieses Repo einchecken. Für das CR-Problem, mit dem ich konfrontiert war, verschwindet es nach dem Einchecken, wenn warncrlf oder autocrlf = true im Abschnitt [core] der .gitconfig-Datei.

deaktiviert
quelle