881 Stimmen

Wie kann ich verhindern, dass "git diff" einen Pager verwendet?

Gibt es einen Befehlszeilenschalter, der an git diff und andere Befehle, die die less Pager standardmäßig? Ich weiß, dass es diese Methoden gibt:

  • git diff | cat ... entfernt die gesamte Syntaxhervorhebung
  • git config --global core.pager cat setzt den Pager in der globalen .gitconfig auf cat
  • export GIT_PAGER=cat

Aber ich würde einen Befehlszeilenschalter vorziehen.

19voto

jcoffland Punkte 4958

Dies funktionierte bei mir mit Git Version 2.1.4 unter Linux:

git config --global --replace-all core.pager cat

Dies ermöglicht Git die Verwendung cat anstelle von less . cat gibt einfach die Ausgabe von diff auf den Bildschirm, ohne dass ein Seitenwechsel stattfindet.

12voto

StellarVortex Punkte 577

Bezüglich der deaktivierten Farbe beim Paspeln:

Utilice --color um zu vermeiden, dass die Farbgebung deaktiviert wird.

git diff --color | less -R

Oder konfigurieren Sie es zwangsweise (z.B. in .gitconfig):

[color]
        ui = on

git diff | less -R

Für nicht-farbige Werkzeuge verwenden Sie dann:

git diff --no-color | some-primitive-tool

Umgebungsvariable exportieren LESS=-R (z.B. in .bashrc) schaltet die Farbunterstützung in "less" standardmäßig ein:

git diff | less

11voto

daniel kullmann Punkte 12902

Ich möchte von Zeit zu Zeit die Seitenumschaltung deaktivieren, wenn ich weiß, dass die Ausgabe nicht sehr lang ist. Hierfür habe ich einen netten Trick gefunden, der Git-Aliase verwendet:

git config --global --add alias.n '!git --no-pager'

Oder fügen Sie Folgendes zu der [alias] Abschnitt von ~/.gitconfig:

n = !git --no-pager

Dies bedeutet, dass Sie das Präfix n um das Paging für jeden Git-Befehl auszuschalten, d.h.:

git n diff # Show the diff without pager
git n log -n 3 # Show the last three commits without pager
git n show v1.1 # Show information about a tag

10voto

Joseph Cheek Punkte 474

Sie können mit pager.alias einen Alias zu diff mit eigenem Pager hinzufügen, etwa so:

[alias]
  dc = diff
  dsc = diff --staged
[pager]
  dc = cat
  dsc = cat

Dadurch bleibt die Farbe an und 'cat' wird als Pager verwendet, wenn 'git dc' aufgerufen wird.

Außerdem, Dinge no zu tun:

  • verwenden. --no-pager in Ihrem Alias. Git (1.8.5.2, Apple Git-48) wird sich beschweren, dass Sie versuchen, die Umgebung zu ändern.
  • Verwenden Sie eine Shell mit !sh o !git . Dadurch wird der oben beschriebene Umgebungsfehler umgangen, aber Ihr Arbeitsverzeichnis wird (für die Zwecke dieses Befehls) auf das oberste Git-Verzeichnis zurückgesetzt, so dass alle Verweise auf eine lokale Datei nicht funktionieren, wenn Sie sich bereits in einem Unterverzeichnis Ihres Repositorys befinden.

8voto

Is Ma Punkte 804

Wie es auf man git können Sie verwenden --no-pager auf einen beliebigen Befehl.

Ich verwende es für:

git --no-pager diff
git --no-pager log --oneline --graph --decorate --all -n 10

Dann verwenden Sie eine alias um lange Befehle zu vermeiden (und sich diese zu merken).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X