So verwenden Sie awknur die +und --Linien unter Berücksichtigung von Farb- oder Textformatierungen git diff:
Keine der anderen Antworten hier (einschließlich meiner anderen Antwort ) wird genau das tun, was Sie zu 100% wollen. Diese Antwort wird jedoch. Hier ist ein 1-Liner, den Sie kopieren und in Ihr Terminal einfügen können. Ich habe es aus Gründen der Lesbarkeit nur aus mehreren Zeilen gemacht - Sie können es auf die gleiche Weise kopieren und einfügen, damit ich es genauso gut lesbar machen kann! Es basiert auf der awkProgrammiersprache:
git diff --color=always "$@" | awk '
# 1. Match and then skip "--- a/" and "+++ b/" lines
/^(\033\[(([0-9]{1,2};?){1,10})m)?(--- a\/|\+\+\+ b\/)/ {
next
}
# 2. Now print the remaining "+" and "-" lines ONLY! Note: doing step 1 above first was required or
# else those lines would have been matched by this matcher below too since they also begin with
# the "+" and "-" symbols.
/^(\033\[(([0-9]{1,2};?){1,10})m)?[-+]/ {
print $0
}
' | less -RFX
Hier sind seine Funktionen. Alle diese Merkmale lösen zusammen die Mängel jeder anderen Antwort hier:
- Es verarbeitet Farbe UND keine Farbausgabe. Das macht dieser reguläre Ausdruck:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- Es verarbeitet ALLE FARBEN und ALLE TEXTFORMATIERUNGSOPTIONEN, einschließlich Fett, Kursiv, Durchgestrichen usw., die Sie in Ihren
git configEinstellungen festlegen können . Deshalb ist der regex oben hat ;?und {1,10}darin: wenn es den Beginn einer Farbe oder Textformatierung Code erkennt, wird es bis zu 10 Sequenzen dieses kombinierten ANSI - Codes entspricht.
Es enthält NICHT auch Zeilen, die mit @@und dem Wort beginnen diff, wie es die akzeptierte Antwort tut. Wenn Sie diese Zeilen wollen (was ich ehrlich gesagt für nützlich halte :)), tun Sie stattdessen Folgendes:
git diff --unified=0
oder
git diff -U0
Es zeigt die Ausgabe genauso an wie git diffim lessPager mit optionaler Farbausgabe ( -R) und nur, wenn der Text> 1 Seite ( -F) ist und während Sie die aktuelle Textseite auf dem Bildschirm beibehalten, wenn Sie quit ( -X) .
Es hat auch den Vorteil, dass es leistungsstark und einfach zu konfigurieren ist, da es die Programmiersprache awk verwendet.
Wenn Sie awk lernen möchten , finden Sie hier einige Ressourcen:
gawk(GNU awk) Handbuch: https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- Studie
git diffnund die darin enthaltenen Kommentare: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Wenn Sie auch möchten
git diffn, was git diffmit Zeilennummern ist, sehen Sie hier: Git Diff mit Zeilennummern (Git-Protokoll mit Zeilennummern)
- Einige Beispiele für awk "Hallo Welt" - und Syntaxtests: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
Als Bonus habe ich auch das Obige eingepackt, um es als zu verwenden git diffc, was bedeutet "git diff, um NUR 'c'hanges zu zeigen". Verwendung ist identisch mit git diff; benutze git diffcstattdessen einfach ! Es unterstützt ALLE Optionen. Die Farbe ist standardmäßig eingeschaltet. Zum Ausschalten verwenden Sie einfach git diffc --no-coloroder git diffc --color=never. Siehe man git difffür Details.
Da ich gestern Abend gerade fertig war git diffn(ein Tool zum git diffAnzeigen mit Zeilen und Zahlen), war das Schreiben git diffctrivial. Ich dachte, ich mache es jetzt besser, während das Wissen in meinem Kopf frisch ist.
Installieren git diffc:
Befolgen Sie die Anweisungen am Ende dieser Antwort hier , außer überall, wo Sie git-diffnin den Anweisungen sehen, verwenden Sie git-diffcstattdessen. Das schließt auch den wgetBefehl ein. Das Herunterladen und Installieren git diffcist einfach: Es sind nur ein paar Befehle.