Gibt es einen Befehlszeilenschalter, an den übergeben werden kann, git diff
und andere Befehle, die less
standardmäßig den Pager verwenden?
Ich weiß, dass ich es an cat weiterleiten kann, aber dadurch werden alle Syntaxhervorhebungen entfernt.
Ich weiß, dass ich den Pager in der globalen .gitconfig auf cat by GITPAGER=cat
(oder so ähnlich) setzen kann. aber ich möchte manchmal Pager haben (abhängig von der Größe des Diff).
Aber ich würde einen Befehlszeilenschalter bevorzugen, wenn es einen gibt; und ich bin nicht in der Lage, einen zu finden, der durch die Manpages geht.
core.pager 'less -+F -+X'
wäre eine neuere Möglichkeit, diese Optionen zu entfernen. Siehe meine Antwort unten .less
mit git (je nachless
Version unterschiedlich): unix.stackexchange.com/questions/107315/…Antworten:
--no-pager
zu Git wird es sagen, keinen Pager zu verwenden. Wenn Sie die Option-F
an übergeben,less
wird die Seite nicht angezeigt, wenn die Ausgabe in einen einzelnen Bildschirm passt.Verwendungszweck:
Weitere Optionen aus den Kommentaren sind:
quelle
core.pager
Konfigurationsvariable git.-E
Ihreless
Optionen erweitern, um sie-F
nutzbar zu machen .--no-pager
dem Befehl ein Präfix voranstellen müssen , wenn Sie ihn in einen Alias aufnehmen möchten. Um einen Fehler zu vermeiden, müssen Sie einen Alias wie folgt erstellen :git config alias.foo '!git --no-pager foo'
. Etwas verwirrend. Einfach Aliasing'--no-pager foo'
funktioniert nicht.Wie bereits in einer früheren Antwort erwähnt, wird die
-F
Option zum Übergebenless
beendet, wenn der Inhalt weniger als einen Bildschirm umfasst. Danach wird der Bildschirm jedoch zurückgesetzt und Sie sehen den Inhalt nicht mehr.Die
-X
Option beseitigt dieses Verhalten. Daher verwende ich Folgendes, um das bedingte Paging basierend auf der Menge des Inhalts zu aktivieren:quelle
git config --global --add core.pager "less -F -X"
in Git verwenden1.8.0.2
, das oben hat nicht funktioniert.export LESS="-RFX"
zu Ihrem.bashrc
oder.zshrc
-X
Fall ist. Verwenden Sie es nicht, wenn Sie das nicht mögen. Ich mag es, weil ich auf diese Weise auf Dinge wie Git-SHAs verweisen kann, indem ich das Ergebnis früherer Git-Befehle in meinem Verlauf betrachte, ohne den Befehl erneut eingeben zu müssen. Jeder für sich.Verwenden
um einen Pager für alle Befehle für alle Repositorys loszuwerden.
Sie können das Paging für einzelne Git-Unterbefehle auch deaktivieren,
pager.<cmd>
indem Sie stattdessen die Einstellung anstelle von verwendencore.pager
, und Sie können Ihre Einstellungen pro Git-Repository ändern (weglassen--global
).Details anzeigen
man git-config
und suchenpager.<cmd>
.quelle
In den letzten Änderungen in der Dokumentation wird eine andere Methode zum Entfernen einer Standardoption für
less
("Standardoptionen"FRSX
) erwähnt.Für diese Frage wäre dies (Git 1.8+)
Zum Beispiel schlägt Dirk Bester in den Kommentaren vor :
Wilson F erwähnt in den Kommentaren und in seiner Frage, dass:
Diese Änderungen waren bereits in Git 1.8.x sichtbar, wie unter " Verwenden Sie immer den Pager für
git diff
" dargestellt (siehe Kommentare). Die Dokumentation wurde jedoch gerade umformuliert ( für Git 1.8.5 oder 1.9, 4. Quartal 2013 ).Siehe Commit 97d01f2a für den Grund für den neuen Wortlaut der Dokumentation:
config:
core.pager
Dokumentation neu schreibenHinweis: Commit b327583 ( Matthieu Moy
moy
, April 2014, für Git 2.0.x / 2.1, Q3 2014) entfernt standardmäßig das S:Pager: Entfernen Sie standardmäßig 'S' aus $ LESS
Die Dokumentation lautet:
quelle
Sie können Pager auch für bestimmte Ausgaben in der globalen Konfiguration deaktivieren / aktivieren:
Um die Option core.pager festzulegen, geben Sie einfach eine leere Zeichenfolge ein:
Dies ist meiner Meinung nach besser, als es
cat
so einzustellen , wie Sie sagen.quelle
git version 2.5.4 (Apple Git-61)
git diff
während es für andere Befehlecode "$($env:UserProfile)\.gitconfig"
und hinzufügen . Die Antwort funktionierte für meine aktuelle Powershell-Sitzung, schien die Einstellung jedoch nirgendwo zu speichern, sodass sie beim nächsten Start wirksam wurde.pager =
[core]
In Bezug auf die deaktivierte Farbe beim Verrohren:
Verwenden Sie
--color
diese Option , um zu vermeiden, dass die Färbung deaktiviert ist.git diff --color | less -R
Oder konfigurieren Sie es erzwungen (in z. B. .gitconfig):
git diff | less -R
Verwenden Sie für nicht farbige Werkzeuge:
git diff --no-color | some-primitive-tool
Beim Exportieren von Umgebungsvariablen
LESS=-R
(z. B. .bashrc) wird die Farbunterstützung standardmäßig in "weniger" aktiviert:git diff | less
quelle
LESS
UmgebungsvariableFRSX
beim Aufrufen des Pagers auf setzt, wenn sie nicht festgelegt ist.Dies funktionierte bei mir mit Git Version 2.1.4 unter Linux:
Dadurch wird Git
cat
anstelle von verwendetless
.cat
speichert die Ausgabe einfachdiff
ohne Paging auf dem Bildschirm.quelle
Sie können einen Alias hinzufügen, um sich mit einem eigenen Pager mit pager.alias zu unterscheiden, wie folgt:
Dadurch bleibt die Farbe eingeschaltet und es wird 'cat' als Pager verwendet, wenn 'git dc' aufgerufen wird.
Auch Dinge, die man nicht tun sollte:
--no-pager
in Ihrem Alias. Git (1.8.5.2, Apple Git-48) beschwert sich, dass Sie versuchen, die Umgebung zu ändern.!sh
oder!git
. Dadurch wird der oben beschriebene Umgebungsfehler umgangen, aber Ihr Arbeitsverzeichnis (für die Zwecke dieses Befehls) wird auf das Git-Verzeichnis der obersten Ebene zurückgesetzt, sodass Verweise auf eine lokale Datei nicht funktionieren, wenn Sie sich bereits in einem Unterverzeichnis von befinden Ihr Repository.quelle
git log
aber nichtgit log --oneline
. Verwenden Siepager.log = less -FXR +/^commit.*
, während Sondergehäuse die--oneline
Option mitalias.l1 = log --oneline
undpager.l1 = less -FXR
.Ich habe dieses Stück in meinem
.gitconfig
und es scheint gut zu funktionieren (deaktiviert für Diff und Show):quelle
Ich möchte Paging von Zeit zu Zeit deaktivieren, wenn ich weiß, dass die Ausgabe nicht sehr lang ist. Dafür habe ich einen tollen Trick mit Git-Aliasen gefunden:
Oder fügen Sie dem
[alias]
Abschnitt von ~ / .gitconfig Folgendes hinzu:Dies bedeutet, dass Sie das Präfix verwenden können
n
, um das Paging für jeden Git-Befehl zu deaktivieren, dh:quelle
Für ein schnelles und schmutziges Skript, das ich geschrieben habe, habe ich es so gemacht:
quelle
$GIT_PAGER
eingestellt ist.git --no-pager
macht das gleiche aber zuverlässiger.Wie es auf man git heißt , können Sie es
--no-pager
für jeden Befehl verwenden.Ich benutze es auf:
Verwenden Sie dann einen Alias , um zu vermeiden, dass Sie lange Befehle verwenden (und sich daran erinnern).
quelle
Für Windows ist es:
Dies schaltet das Paging für alles in aus
git
, einschließlich des super nervigen ingit branch
.quelle
Wenn Sie das oh-my-zsh in der
~/.oh-my-zsh/lib/misc.zsh
Datei verwenden, kommentieren Sie diese Zeile:quelle
unset LESS
am Ende der .zshrc hinzufügen.Standardmäßig verwendet git weniger als Pager. Normalerweise bevorzuge ich mehr, da die erste Seite gedruckt wird und Sie dann durch den Inhalt scrollen können.
Außerdem bleibt der Inhalt in der Konsole, wenn Sie fertig sind. Dies ist normalerweise praktisch, da Sie nach der Suche häufig etwas mit dem Inhalt tun möchten (z. B. dem Commiter eine E-Mail senden und ihm mitteilen, dass er bei seinem letzten Commit einen Fehler eingeführt hat).
Wenn Sie dann Inhalte weiterleiten möchten, ist es unpraktisch, einen Bildlauf durchzuführen, um alles zu drucken. Das Gute an mehr ist, dass Sie es mit einer Pipeline kombinieren können und es durch alles leitet, z.
Grundsätzlich ist mehr alles, was Sie jemals brauchen würden, es sei denn, Sie möchten nicht, dass der Inhalt nach Abschluss in der Konsole verbleibt. Um stattdessen mehr zu verwenden, gehen Sie wie folgt vor.
quelle
Oder
--no-pager
.Übrigens: Um die Farbe mit Katze zu erhalten
quelle
Folgen Sie einfach den Anweisungen unten.
vi ~/.gitconfig
Sie einfach Ihr Terminal ein.LESS="-F -X $LESS"
Zeile einfügen .:wq
und geben Sie ein.quelle