it-swarm.com.de

Git Diff - Umgang mit langen Schlangen?

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, wird die Farbcodierung nicht mehr korrekt angezeigt, und die Zeilen werden nicht mehr richtig ausgerichtet, wodurch es schwieriger wird, die Änderung zu verfolgen.

Gibt es eine Möglichkeit, dieses Problem zu vermeiden, oder die Zeilen einfach umbrechen zu lassen?

(git 1.5.5 über mingw32 ausführen)

225
Peter Boughton

Die Anzeige der Ausgabe von git diff Wird von dem von Ihnen verwendeten Pager übernommen.

Unter Linux wird normalerweise less verwendet.

Sie können git anweisen, einen anderen Pager zu verwenden, indem Sie die Umgebungsvariable GIT_PAGER Setzen. Wenn Ihnen das Paging nichts ausmacht (zum Beispiel können Sie mit Ihrem Terminal einen Bildlauf durchführen), können Sie GIT_PAGER Explizit auf leer setzen, um die Verwendung eines Pagers zu beenden. Unter Linux:

$ GIT_PAGER='' git diff

Ohne Pager werden die Zeilen umgebrochen.

Wenn Ihr Terminal keine farbige Ausgabe unterstützt, können Sie dies auch deaktivieren, indem Sie entweder das Argument --no-color Verwenden oder einen Eintrag in den Farbabschnitt Ihrer Git-Konfigurationsdatei einfügen.

$ GIT_PAGER='' git diff --no-color
113
SpoonMeiser

Oder wenn Sie weniger als Standard-Pager verwenden, geben Sie einfach -S beim Betrachten des Unterschieds zum erneuten Aktivieren des Einwickelns in weniger.

224
someone45

Sie können auch git config, um den Pager für den Wrap einzurichten.

$ git config core.pager 'less -r' 

Legt die Pager-Einstellung für das aktuelle Projekt fest.

$ git config --global core.pager 'less -r' 

Legt den Pager global für alle Projekte fest

113
Shoan

Mit voller Anerkennung an Josh Diehl in einen Kommentar an diese Antwort , sollte dies dennoch eine Antwort für sich sein, also füge ich sie hinzu :

Eine Möglichkeit, mit Unterschieden in langen Zeilen umzugehen, ist die Verwendung eines wortorientierten Diffs. Dies kann erfolgen mit:

git diff --Word-diff

In diesem Fall erhalten Sie eine deutlich andere Diff-Ausgabe, die Ihnen genau zeigt, was sich in einer Zeile geändert hat.

Zum Beispiel, anstatt so etwas zu bekommen:

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line

Sie könnten so etwas bekommen:

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line

Oder mit Kolorierung stattdessen:

result of just <code>git diff</code>

Das könnten Sie bekommen:

result of <code>git diff --Word-diff</code>

Wenn Sie eine wirklich lange Warteschlange vergleichen, haben Sie möglicherweise immer noch Probleme mit der von Ihnen beschriebenen Pager-Situation, die offenbar zur Zufriedenheit in anderen Antworten angesprochen wurde. Hoffentlich erhalten Sie dadurch ein neues Tool, mit dem Sie leichter erkennen können, was sich in der Leitung geändert hat.

41
lindes

Um weniger als Pager zu verwenden und den Zeilenumbruch dauerhaft zu machen, können Sie einfach die Option Lange Zeilen falten aktivieren:

git config --global core.pager 'less -+S'

Auf diese Weise müssen Sie es nicht eingeben, während Sie weniger verwenden.

Prost

29

Ich habe nur gegoogelt. GIT_PAGER='less -r' funktioniert bei mir

19
singingfish

Mac OSX: Keine der anderen Antworten, mit Ausnahme des "-S" von jemandem 45, während weniger ausgeführt wird, hat bei mir funktioniert. Es dauerte Folgendes, um den Zeilenumbruch dauerhaft zu machen:

git config --global core.pager 'less -+$LESS -FRX'
18
John Lemberger

Seit Git 1.5.3 ( Sep 2007 )

ein --no-pager Option war verfügbar.

git --no-pager diff

Wie verhindere ich, dass Git Diff einen Pager verwendet?

Beispiel

Ab Version 2.1 ist der Zeilenumbruch die Standardeinstellung

Git v2.1 Release Notes

10
Steven Penny

Acht Jahre später finde ich eine überlegene Antwort von https://superuser.com/questions/777617/line-wrapping-less-in-os-x-spezifisch-für-die-Verwendung-mit-git-diff :

git config core.pager `fold -w 80 | less`

Jetzt leiten Sie den Git Diff durch die Falte, dann zu weniger: umbrochen, weniger Seitenhöhe ist korrekt, Syntax-Hervorhebung beibehalten.

5
Thomson Comer

Sie könnten einfach die Ausgabe von git diff auf more leiten:

git diff | more
3
AnonTidbits

Wenn Sie "git diff" verwenden und es zeigt mehrere Seiten (Sie sehen ":" am Ende der Seite), können Sie in diesem Fall "-S" eingeben und die Eingabetaste drücken. (S sollte ein Großbuchstabe sein). es wird lange Linien falten umschalten.

3
Amin

Keine perfekte Lösung, aber gitk und git-gui kann diese Informationen anzeigen und über Bildlaufleisten verfügen.

3
Peter Boughton

Bis jetzt hat niemand darauf hingewiesen. Es ist ganz einfach zu merken und es muss keine zusätzliche Konfiguration in der git config vorgenommen werden

git diff --color | less -R
2
infoclogged

liste die aktuelle/Standardkonfiguration auf:

  $ git config --global core.pager  
    less -FXRS -x2

dann updaten und das -S weglassen wie:

  $ git config --global core.pager 'less -FXR -x2'

das -S: Bewirkt, dass Linien, die länger als die Bildschirmbreite sind, abgeschnitten und nicht gefaltet werden.

1
user5870226