Wenn ich den git branch
Befehl verwende, um alle Zweige aufzulisten, sehe ich die Ausgabe von git branch | less
.
Der Befehl git branch
soll eine Liste von Zweigen anzeigen, wie ls
dies auch für Dateien der Fall ist.
Dies ist die Ausgabe, die ich bekomme:
Wie erhalte ich das Standardverhalten von git branch
? Was verursacht die ausgelagerte Ausgabe?
Ich benutze ZSH mit oh_my_zsh
(nichts für Git drin ) und mein .gitconfig
Aussehen sieht so aus:
[user]
email = [email protected]
name = Dennis Haegler
[push]
default = simple
[merge]
tool = vimdiff
[core]
editor = nvim
excludesfile = /Users/dennish/.gitignore_global
[color]
ui = true
[alias]
br = branch
ci = commit -v
cam = commit -am
co = checkout
df = diff
st = status
sa = stash
mt = mergetool
cp = cherry-pick
pl = pull --rebase
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh
\"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
git branch
mit etwas anderem zu verketten . Mit der Pipe-Erkennung gibt Git die Verzweigungsliste innerhalb der Befehlegit branch > branches.txt
oder an stdout ausgit branch | wc -l
.ESC/q
nach einer einfachengit branch
Überprüfung einen Typ extra .less
, können Sie--no-init --quit-if-one-screen
IhrerLESS
Umgebungsvariablen hinzufügen , was dazu führt, dassless
nur in stdout geschrieben wird, wenn der Text ohne Bildlauf angezeigt werden kann. Sieheman less
für weitere Details.[pager] branch = false
(in zwei Zeilen).Wie andere Antworten hervorhoben, leitet sich Git
less
für die meisten Befehle standardmäßig ( standardmäßig) in einen Pager .Ein wichtiger Punkt ist jedoch, dass Git , wenn die Umgebungsvariable WENIGER nicht gesetzt ist , sie auf FRX setzt. Dies hat zur Folge, dass das vom Benutzer sichtbare Verhalten dasselbe ist, als ob der Pager nicht verwendet worden wäre, wenn die Ausgabe des Befehls kurz wäre (d. H. wenn Sie nur wenige Zweige haben). Siehe Mann weniger :
Wenn Sie das von Ihnen beschriebene Verhalten erhalten, haben Sie höchstwahrscheinlich
$LESS
etwas anderes festgelegt, und wenn Sie es (unset LESS
) deaktivieren, wird das Problem behoben, während das "Pager" -Verhalten für eine lange Ausgabe beibehalten wird. Alternativ können Sie das Verhalten aktivieren, während Sie es unverändert$LESS
lassen, indem Sie es Ihrer.gitconfig
Datei hinzufügen :Wenn Sie das Pager-Ding wirklich nicht mögen, können Sie es global oder auf Befehlsbasis deaktivieren (siehe andere Antworten).
quelle
Nicht um über Semantik zu streiten, aber das Verhalten, das Sie erhalten, ist die Standardeinstellung. Deshalb bekommen Sie es, wenn Sie nicht nach etwas anderem fragen. Standardmäßig
branch
(und zahlreiche andere Git-Befehle) wird beim Senden der Ausgabe an das Terminal ein Pager verwendet.Sie können diese Standardeinstellung mit der folgenden
--no-pager
Option überschreiben :Wenn Sie die Ausgabe in eine Datei umleiten, sollte Git erkennen, dass sie nicht in ein Terminal schreibt, und daher ohnehin keinen Pager verwenden. (Auf der anderen Seite schlägt dies einen Anwendungsfall für die Skripterstellung vor. In diesem Fall sollten Sie die Verwendung eines Installationsbefehls
git for-each-ref
in Betracht ziehen, wie dies vorzuziehen istgit branch
.)quelle
git --no-pager branch
funktioniert. Aber wie ist das eingestellt? Nur diePAGER
Umgebungsvariable ist auf gesetztless
. Dies ist nicht das Standardverhalten. Alle meine Colleges haben eine Ausgabe als Liste, die auf dem Terminal ausgedruckt wird.Dieses Git-Verhalten war auch für mich immer nerviger. Ich habe meine Tag-Liste
less
hinzugefügt, wenn ich zum Beispiel nur Tags auflisten möchte.Sie können dieses Verhalten auch steuern, indem Sie den Standard- Git-PAGER in
cat
anstelle von ändernless
. Ich scrolle lieber in iTerm als in einem Editor. Ich benutze den Editor gerne, wenn ich will.Damit:
quelle
git log
ist es ärgerlich, wenn ich es tue . Ich vermisse nur das ursprüngliche Verhalten, hatte aber keine Zeit, meinen täglichen Workflow in dieser Perspektive zu verbessern.git log
...Für diejenigen, die ihre aktualisieren möchten,
~/.gitconfig
um dies zu beheben, würde es so aussehen:quelle
Weil Git standardmäßig die Ausgabe im Pager öffnet (zumindest in Ubuntu). Die akzeptierte Antwort ersetzt den Pager vollständig, was Ihnen möglicherweise nicht gefällt, wenn Ihre Ausgabe sehr lang ist.
Ich würde empfehlen, den Pager durch einen zu ersetzen
less
, damit er nicht weniger als die Höhe des Terminals "scrollt".quelle
Mach Folgendes:
quelle
Die akzeptierte Antwort scheint falsch zu sein. Es gibt zwei Probleme:
git branch
nicht immer ein Pager verwendet, was bei hoher Ausgabe nicht erwünscht ist.Der wahre Grund ist, dass bash und zsh unterschiedliche Standarddefinitionen für LESS haben: bash definiert nichts, während zsh es definiert
-R
. Wenn ichunset LESS
in zsh mache , geht alles wieder normal ....Das
-R
Verhalten kann noch erwünscht sein. In diesem Fall können Sie Ihrer .zshrc-Datei die folgende Anweisung hinzufügen, damit alles funktioniert:-F
'bewirkt, dass weniger automatisch beendet wird, wenn die gesamte Datei auf dem ersten Bildschirm angezeigt werden kann'. Allerdings-X
muss gleichzeitig angegeben werden, sonst wird keine Ausgabe angezeigt, wenn es weniger als eine Bildschirmseite der Ausgabe.quelle
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
Um Ihr Problem zu lösen, können Sie PAGER und GIT_PAGER in Ihrer Shell deaktivieren.
quelle
PAGER
(GIT_PAGER
war nicht gesetzt) ist immer noch vorhanden. Gibt es einen Ort, an dem ich diese Umgebung überprüfen muss?PAGER= git branch
(mit einem Leerzeichen nach und keinem vor dem Gleichheitszeichen genau wie geschrieben). Keine Ahnung, ob es besser ist als zBgit branch | cat
.Ich hatte das gleiche Problem mit
git status
undgit config --global pager.status false
löse das auch.quelle