git diff - Umgang mit langen Schlangen?
Frage
Ich bin mit git-diff auf eine Datei, aber die Änderung am Ende einer langen Reihe ist.
Wenn ich Cursor-Tasten verwenden, um nach rechts bewegen verliert Farbcodierung und schlechter die Linien überlagern sich nicht, so dass es schwieriger, die Änderung zu verfolgen.
Gibt es eine Möglichkeit, dieses Problem zu vermeiden, oder einfach die Linien statt wickeln machen?
(Lauf git 1.5.5 über mingw32)
Lösung
Die Anzeige der Ausgabe von git diff
behandelt wird durch was auch immer Pager Sie verwenden.
üblicherweise unter Linux, less
verwendet werden würde.
Sie können git anweisen, einen anderen Pager zu verwenden, indem die GIT_PAGER
Umgebungsvariable. Wenn Sie nicht über Paging nichts dagegen haben (zum Beispiel Ihr Terminal können Sie zurückblättern) explizit versuchen könnte GIT_PAGER
Einstellung zu leeren, um ihn zu stoppen, einen Pager. Unter Linux:
$ GIT_PAGER='' git diff
Ohne einen Pager, werden die Zeilen umgebrochen.
Wenn Ihr Terminal nicht farbige Ausgabe nicht unterstützt, können Sie auch diese deaktivieren entweder mit dem --no-color
Argumente, oder setzen Sie einen Eintrag in der Farbe Abschnitt Ihrer git config-Datei.
$ GIT_PAGER='' git diff --no-color
Andere Tipps
Oder wenn Sie weniger als Standard-Pager verwenden geben Sie einfach -S
beim Betrachten des diff zu reaktivieren Verpackung in weniger.
Sie können auch git config
einrichten Pager verwenden zu wickeln.
$ git config core.pager 'less -r'
Setzt die Pager-Einstellung für das aktuelle Projekt.
$ git config --global core.pager 'less -r'
Setzt den Pager global für alle Projekte
Mit vollem Kredit Josh Diehl in ein Kommentar href="https://stackoverflow.com/a/3107807/313756"> diese Antwort , ich fühle mich trotzdem wie dies sollte eine Antwort zu sich selbst sein, so dass das Hinzufügen es:
Eine Möglichkeit, mit dem Sehen Unterschiede in langen Linien zu behandeln ist einen wortorientierten diff zu verwenden. Dies kann gemacht werden:
git diff --word-diff
In diesem Fall werden Sie eine deutlich andere diff Ausgabe erhalten, das zeigt Ihnen speziell, was innerhalb einer Zeile geändert hat.
Zum Beispiel, statt so etwas wie diese 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önnte so etwas wie diese:
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 Einfärben, statt dies:
Sie können diese:
Nun, wenn Sie eine wirklich lange Linie sind zu vergleichen, können Sie immer noch Probleme mit der Pager-Situation, die Sie ursprünglich beschrieben, und die angegangen wurde, offenbar zur Zufriedenheit, in anderen Antworten. Hoffentlich ein neues Werkzeug gibt, obwohl, um leichter zu erkennen, was auf der Linie geändert hat.
weniger als Pager verwenden und Zeilenumbruch machen permanent Sie können einfach die Klapplangleinen Option aktivieren:
git config --global core.pager 'less -+S'
Auf diese Weise müssen Sie es nicht geben, während weniger verwendet wird.
Prost
Nur diese eine gegoogelt auf. GIT_PAGER='less -r'
funktioniert für mich
Mac OSX: Keiner der anderen Antworten außer someone45 des ‚-S‘, während weniger läuft für mich gearbeitet. Es dauerte folgendes word-wrap persistent zu machen:
git config --global core.pager 'less -+$LESS -FRX'
Da Git 1.5.3 ( September 2007 )
a --no-pager
Option wurde zur Verfügung.
git --no-pager diff
Wie verhindere ich git diff von einem Pager?
mit v2.1 Starten, Wrap ist die Standardeinstellung
Acht Jahre später finde ich eine bessere Antwort, von https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
git config core.pager `fold -w 80 | less`
Jetzt können Sie Rohr die git diff durch fold, zuerst, dann auf weniger:. Gewickelt, weniger Seitenhöhe korrekt ist, halten die Syntaxhervorhebung
Sie könnten einfach die Ausgabe des git diff mehr:
git diff | more
keine perfekte Lösung, aber gitk
und git-gui
können beide zeigen diese Informationen,
und haben Bildlaufleisten.
Wenn Sie „git diff“ verwenden und es zeigt mehrere Seiten (Sie sehen „:“ am Ende der Seite) in diesem Fall können Sie „-S“ und drücken Sie die Eingabetaste (S sollte Kapital sein).. es wechselt fold lange Linien.
Noone wies darauf hin, dies bis jetzt. Seine ganz einfach zu merken und keine zusätzliche Konfiguration muss in der git Config getan werden
git diff --color | less -R
Liste der aktuellen / default config:
$ git config --global core.pager
less -FXRS -x2
dann aktualisieren und den SICH auslassen wie:
$ git config --global core.pager 'less -FXR -x2'
die ES. Verursacht Zeilen länger als die Bildschirmbreite eher gehackt werden, als gefaltet
Wenn in Schwierigkeiten, ich greifen oft zu DiffMerge. Ausgezeichnetes Diff-Tool, das in-line diff Hervorhebung hat. Auch in den neuesten Versionen sie hat einen Modus einen horizontalen Modus zu haben.
Ich habe nicht in der Lage gewesen git zu konfigurieren, es zu benutzen, though. Also muss ich um Dreck zuerst beide Versionen der Datei zu erhalten.
Der einfache Weg, es in meinem Fall zu tun, verwende ich Linux os
git diff > text.txt
Diese Befehlszeile erstellen und legt den git diff Ausgang innerhalb des text.txt dann können Sie es mit einem anderen Text-Editor zum Beispiel erhabenen Text öffnen.
sublime text.txt
Hoffe, dass es Ihnen helfen.
vergessen Sie es nach nicht löschen. = 0)