Wenn ich den Befehl git branch
zum Auflisten aller Zweige verwende, sehe ich die Ausgabe von git branch | less
.
Der Befehl git branch
soll eine Liste von Zweigen anzeigen, wie ls
für Dateien.
Das ist die Ausgabe, die ich bekomme:
Wie erhalte ich das Standardverhalten von git branch
? Was verursacht die seitenweise Ausgabe?
Ich verwende ZSH mit oh_my_zsh
(nichts für Git drin) und mein .gitconfig
sieht folgendermaßen 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
Wie oben erwähnt, war dies eine Standardverhaltensänderung eingeführt in Git 2.16 .
Sie können die Seitenausgabe für git branch
standardmäßig mit der Einstellung pager.branch
config deaktivieren :
git config --global pager.branch false
Nicht um über Semantik zu streiten, sondern über das Verhalten, das Sie erhalten ist die Standardeinstellung. Deshalb bekommst du es, wenn du nicht nach etwas anderem fragst. Standardmäßig verwenden branch
(und zahlreiche andere git-Befehle) einen Pager, wenn Ausgaben an das Terminal gesendet werden.
Sie können diese Standardeinstellung mit der Option --no-pager
Überschreiben
git --no-pager branch
Oder wenn Sie die Ausgabe in eine Datei umleiten, sollte git erkennen, dass sie nicht in ein Terminal schreibt, und sollte daher sowieso keinen Pager verwenden. (Auf der anderen Seite schlägt dies einen Anwendungsfall für Skripte vor. In diesem Fall sollten Sie in Betracht ziehen, einen Installationsbefehl wie git for-each-ref
Anstelle von git branch
Zu verwenden.)
Wie andere Antworten gezeigt haben, leitet git bei den meisten Befehlen standardmäßig einen Pager ein (standardmäßig less
).
Ein wichtiger Punkt ist jedoch: Wenn die Umgebungsvariable LESS nicht gesetzt ist, setzt Git sie auf FRX . Dies hat zur Folge, dass das vom Benutzer sichtbare Verhalten dasselbe ist, als wäre der Pager bei der Ausgabe des Befehls nicht verwendet worden ist kurz (wenn Sie nur wenige Äste haben). Mann weniger :
-F oder --quit-if-one-Bildschirm
Bewirkt, dass weniger automatisch beendet wird, wenn die gesamte Datei auf dem ersten Bildschirm angezeigt werden kann.-R oder --RAW-CONTROL-CHARS
[...] ANSI-Farb-Escape-Sequenzen werden in "roher" Form ausgegeben.-X oder --no-init
Deaktiviert das Senden der Termcap-Initialisierungs- und Deinitialisierungszeichenfolgen an das Terminal. Dies ist manchmal wünschenswert, wenn die Deinitialisierungs-String macht etwas unnötiges, wie das Löschen der Bildschirm.
Wenn Sie das von Ihnen beschriebene Verhalten erhalten, haben Sie $LESS
höchstwahrscheinlich auf eine andere Einstellung gesetzt. Wenn Sie die Einstellung aufheben, wird das Problem beseitigt, während das Pager-Verhalten für lange Ausgaben beibehalten wird. Alternativ können Sie das Verhalten aktivieren, während Sie $LESS
so wie es ist, indem Sie es Ihrer .gitconfig
-Datei hinzufügen:
[core]
pager = less -FRX
Wenn Sie das Pager-Ding wirklich nicht mögen, können Sie es global oder auf Befehlsbasis deaktivieren (siehe andere Antworten).
Für diejenigen, die ihren ~/.gitconfig
aktualisieren möchten, um dies zu beheben, würde es so aussehen:
[pager]
branch = false
dieses git-verhalten war auch immer ärgerlicher für mich ... Ich bekam meine Tagliste in less
, wenn ich nur Tags auflisten wollte.
Sie können dieses Verhalten auch steuern, indem Sie die StandardeinstellungGit PAGERin cat
anstelle von less
..__ ändern. Ich würde lieber in iTerm scrollen als im Editor. Ich verwende den Editor gerne, wenn ich möchte.
So:
git config --global core.pager cat
Ich hoffe, es hilft.
Git-Verzweigungsbefehl verhält sich wie 'less'
Da Git standardmäßig die Ausgabe im Pager öffnet (zumindest in Ubuntu), ersetzt die akzeptierte Antwort den Pager vollständig, was Ihnen möglicherweise nicht gefällt, wenn Ihre Ausgabe sehr lang ist.
Ich würde empfehlen, den Pager durch less
zu ersetzen, damit die Ausgaben nicht unter der Höhe des Terminals "gescrollt" werden.
git config --global --replace-all core.pager "less -F -X"
Mach Folgendes:
[alias]
br = !git --no-pager branch
https://git-scm.com/book/de/v2/Git-Internals-Environment-Variables
GIT_PAGER steuert das Programm, das zum Anzeigen der mehrseitigen Ausgabe auf .__ verwendet wird. die Befehlszeile Wenn dies nicht festgelegt ist, wird PAGER als Fallback verwendet.
Um Ihr Problem zu lösen, können Sie PAGER und GIT_PAGER in Ihrer Shell aufheben.