Diff hat nur Teile von Linien geändert

8

Ist es möglich, mit git diff ? nur Unterschiede zwischen alten und neuen Zeilen anzuzeigen?

Hier ist der Inhalt der Datei a.txt:

  

123456789

Und hier ist der Inhalt der Datei b.txt

  

123455789

Hier ist normal git diff output:

Und hier ist, was ich zu erreichen versuche:

Ich würde das lieber mit git diff machen, aber wenn es nicht möglich ist, bin ich mit jeder anderen App einverstanden.

    
xx77aBs 02.09.2014, 09:39
quelle

1 Antwort

11

Dies ist, was die Option --word-diff für git diff tut. Obwohl standardmäßig nicht auf dieser Granularitätsebene.

Um Single-Zeichen-Diffs wie diese zu erhalten, würde auch ein benutzerdefiniertes --word-diff-regex benötigt. (Ich habe '([^[:alnum:]]|[^[:space:]])' in einem Git Alias ​​hier, was das zu tun scheint. Obwohl das nicht der Punkt war, als ich es schrieb.)

Sie können übrigens auch --word-diff=color --word-diff-regex='...' auf --color-words='...' abkürzen.

Sehen Sie, wenn dies tut, was Sie wollen:

%Vor%

Verwendet als:

%Vor%

oder

%Vor%

Dieses awk könnte wahrscheinlich sauberer sein, und es gibt ein non-GNU awk split idiom, um ein Array zu löschen, an das ich mich nicht direkt erinnern kann, wenn delete a ein Problem ist.

Bearbeiten: Aktualisierter Code oben, um der neuesten Revision von gist zu entsprechen. Das ursprüngliche Sonderfallmuster war übermäßig freizügig. Der ursprüngliche Code hat Leerzeilen nicht korrekt verarbeitet. Der aktualisierte Code tut auch nicht, aber tut das Beste, was ich glaube, ist möglich angesichts der bekannte Einschränkungen von --word-diff=porcelain .

    
Etan Reisner 02.09.2014, 09:54
quelle

Tags und Links