Ich führe git-diff für eine Datei aus, aber die Änderung steht am Ende einer langen Zeile.
Wenn ich mich mit den Cursortasten nach rechts bewege, verliert die Farbcodierung - und schlimmer noch, die Linien richten sich nicht aus -, was es schwieriger macht, die Änderung zu verfolgen.
Gibt es eine Möglichkeit, dieses Problem zu vermeiden oder stattdessen einfach die Zeilen umbrechen zu lassen?
Ich verwende Git 1.5.5 über mingw32.
git diff --color-words | fold
fold
aber es entfernt Farbe. Da Sie angeben, gehe--color-words
ich davon aus, dass Sie es geschafft haben, Farben an zu übergebenfold
. Wie?Antworten:
Die Anzeige der Ausgabe von
git diff
wird von jedem Pager ausgeführt, den Sie verwenden.Üblicherweise wird unter Linux
less
verwendet.Sie können git anweisen, einen anderen Pager zu verwenden, indem Sie die
GIT_PAGER
Umgebungsvariable festlegen. Wenn Ihnen das Paging nichts ausmacht (z. B. können Sie mit Ihrem Terminal einen Bildlauf durchführen), können Sie explizit festlegenGIT_PAGER
, dass es leer ist, um es mit einem Pager zu stoppen. Unter Linux:Ohne Pager werden die Zeilen umbrochen.
Wenn Ihr Terminal keine farbige Ausgabe unterstützt, können Sie dies auch deaktivieren, indem Sie entweder das
--no-color
Argument verwenden oder einen Eintrag in den Farbbereich Ihrer Git-Konfigurationsdatei einfügen.quelle
Oder wenn Sie weniger als Standard-Pager verwenden, geben Sie einfach ein,
-S
während Sie das Diff anzeigen, um das Wrapping in weniger wieder zu aktivieren.quelle
--word-diff
, um eine farbcodierte Hervorhebung geänderter Wörter zu sehen--word-diff
Teil verdient es, eine eigene Antwort darauf zu haben, da ich viel zur Lösung des zugrunde liegenden Problems beitragen muss: herauszufinden, was sich in einer langen Reihe geändert hat. Also habe ich es geschafft: stackoverflow.com/a/19253759/313756-S
mit einem Großbuchstaben S tippen , nicht-s
. Less zeigt unten nach der Eingabe die Meldung "Lange Zeilen falten (RETURN drücken)" an. Wenn Sie-S
dann die Eingabetaste drücken, wird das Umbrechen aktiviert.Sie können den
git config
Pager auch zum Umbrechen einrichten.Legt die Pager-Einstellung für das aktuelle Projekt fest.
Legt den Pager global für alle Projekte fest
quelle
git config --global core.pager "less -r"
man less
,-r
Sagt nichts über die Verpackung.Mit der vollen Anerkennung von Josh Diehl in einem Kommentar zu dieser Antwort denke ich dennoch, dass dies eine Antwort für sich selbst sein sollte, also füge es hinzu:
Eine Möglichkeit, mit Unterschieden in langen Zeilen umzugehen, ist die Verwendung eines wortorientierten Diff. Dies kann erfolgen mit:
In diesem Fall erhalten Sie eine deutlich andere Diff-Ausgabe, die Ihnen genau zeigt, was sich innerhalb einer Zeile geändert hat.
Zum Beispiel, anstatt so etwas zu bekommen:
Sie könnten so etwas bekommen:
Oder stattdessen mit Kolorierung:
Sie könnten dies bekommen:
Wenn Sie nun eine wirklich lange Warteschlange vergleichen, haben Sie möglicherweise immer noch Probleme mit der Pager-Situation, die Sie ursprünglich beschrieben haben und die anscheinend in anderen Antworten zur Zufriedenheit angesprochen wurde. Hoffentlich erhalten Sie dadurch ein neues Tool, mit dem Sie leichter erkennen können, was sich in der Zeile geändert hat.
quelle
--word-diff
:color
,plain
, undporcelain
. Außerdem kann man den regulären Ausdruck für Wortgrenzen mit ändern--word-diff-regex
. Der Standardwert scheint zu sein\S+
. ( v2.1.1 )--color-words
scheint eine Abkürzung zu sein--word-diff=color
, was schön ist, wenn Sie nur das Diff betrachten und es nicht teilen.--word-diff=porcelain
besser, als--word-diff
weilporcelain
die Änderungen in separaten Zeilen angeordnet werden, während--word-diff
die Änderungen inline gestellt werden. Durch separate Linien können Sie die Unterschiede leichter erkennen, wenn die Unterschiede subtil sind.Um weniger als Pager zu verwenden und den Zeilenumbruch dauerhaft zu machen, können Sie einfach die Option zum Falten langer Zeilen aktivieren:
Auf diese Weise müssen Sie es nicht eingeben, während Sie weniger verwenden.
Prost
quelle
git config --global core.pager 'less -S
Ich habe gerade diesen gegoogelt.
GIT_PAGER='less -r'
funktioniert bei mirquelle
less -R
(Eigentlich benutze ichless -eiFRSX
, was auch Farb- und Zeilenumbruchprobleme löst.)Mac OSX: Keine der anderen Antworten außer jemandes '-S', während weniger läuft, hat für mich funktioniert. Es dauerte Folgendes, um den Zeilenumbruch dauerhaft zu machen:
quelle
-+$LESS
Parameter? Sofern git es nicht definiert, ist meine Umgebungsvariable LESS nicht einmal festgelegt.$LESS
wird ein bestimmter Wert festgelegt (z. B. durch ein.login
oder ein.profile
oder etwas), und diese Option fügt meiner Meinung nach nur die Standardeinstellungen hinzu und fügt diese dann hinzu-FRX
.$LESS
ist undefiniert.Seit Git 1.5.3 ( Sep 2007 )
Eine
--no-pager
Option war verfügbar.Wie verhindere ich, dass Git Diff einen Pager verwendet?
Beispiel
Ab Version 2.1 ist Wrap die Standardeinstellung
Git v2.1 Versionshinweise
quelle
Acht Jahre später finde ich eine überlegene Antwort unter /superuser/777617/line-wrapping-less-in-os-x-specicular-for-use-with-git-diff :
Jetzt leiten Sie den Git-Diff zuerst durch die Falte und dann zu weniger: Umbrochen, weniger Seitenhöhe ist korrekt, Syntaxhervorhebung beibehalten.
quelle
Wenn Sie "git diff" verwenden und mehrere Seiten angezeigt werden (Sie sehen ":" am Ende der Seite), können Sie in diesem Fall "-S" eingeben und die Eingabetaste drücken (S sollte Großbuchstaben sein). es wird das Falten langer Linien umschalten.
quelle
Bisher hat niemand darauf hingewiesen. Es ist recht einfach zu merken und es muss keine zusätzliche Konfiguration in der Git-Konfiguration vorgenommen werden
quelle
git diff --color | less -FR
für kleine Änderungen, wenn Sie nicht scrollen müssenSie können die Ausgabe von git diff einfach auf mehr leiten:
quelle
Keine perfekte Lösung, aber
gitk
undgit-gui
diese Informationen sowohl zeigen, und Scrollbalken haben.quelle
Listen Sie die aktuelle / Standardkonfiguration auf:
dann aktualisieren und lassen Sie die -S wie:
the -S: Bewirkt, dass Linien, die länger als die Bildschirmbreite sind, eher geschnitten als gefaltet werden.
quelle
Wenn ich in Schwierigkeiten bin, greife ich oft auf DiffMerge zurück. Hervorragendes Diff-Tool mit Inline-Diff-Hervorhebung. Außerdem haben sie in den neuesten Versionen einen Modus hinzugefügt, um einen horizontalen Modus zu haben.
Ich konnte git jedoch nicht für die Verwendung konfigurieren. Also muss ich mich umsehen, um zuerst beide Versionen der Datei zu bekommen.
quelle