nur das Ausschalten der Pager in git für den Stash Befehl
Frage
ich in der Regel wie die Verwendung des Pagers in git, aber für git stash
ärgert der Pager mich. Wenn git stash list
anrufen, möchte ich nicht, die drei Zeilen der Ausgabe im Pager angezeigt werden - es zwingt mich nur zu drücken q
, um die Ausgabe nicht verfügbar wieder zu machen, wenn die Folow-up git stash pop
Befehl eingeben
Eine Lösung wäre, zu verwenden,
git --no-pager stash list
, aber das ist zu viel Typisierung (ich bin faul). Nach dem Manpage von git config
habe ich versucht,
git config --global pager.stash false
, aber das scheint nicht zu tun, was die Dokumentation sagt (eigentlich habe ich nicht bemerkt keine Wirkung). Dann habe ich versucht
git config --global alias.stash "--no-pager stash"
wieder ohne spürbare Wirkung.
Die Konfiguration wird korrekt aktualisiert, zum Beispiel
git config pager.stash
false
Es hat einfach keinen Effekt. Was vermisse ich? Und wie kann ich erreichen, dass git stash
nicht den Pager nicht verwendet?
Lösung
Es sieht aus wie versteck, und andere nicht-eingebauter Befehl (als einen Shell-Skript geschrieben, anstatt in C) fehlt auf dem Pager-Konfigurationsschritt aus. Ich schickte eine Notiz zur git Mailingliste darüber zu fragen; es sieht aus wie es ein bekanntes Problem ist, aber nicht ganz trivial zu beheben.
Der Hauptgrund dafür sind Sie keinen Effekt von Ihrem alias zu sehen ist, dass git leise Aliase für integrierte Befehle ignoriert; die Idee ist, dass Sie nie einen Befehl unzugänglich eigentlich machen wollen. Für die Alias ??des Seins läuft eine Chance haben, müssen Sie ihm etwas anderes als stash
nennen.
Ich glaube jedoch, dass einfache Aliase werden nicht in die Umwelt ein git Befehl in, ausgeführt zu beeinflussen erlaubt, die die Optionen enthält allgemein weitergegeben sich git
. Wenn ich einen Alias ??wie das Ihre verwenden:
git config alias.foo --no-pager stash
git foo
fatal: alias 'foo' changes environment variables
Wenn Sie das richtig machen wollen, müssten Sie !git --no-pager stash
verwenden, so dass es dann laichen eine Sub-Shell und erneut aufrufen git.
Eine weitere temporäre Lösung, da es sich um ein Shell-Skript ist, wäre direkt bearbeiten libexec/git-core/git-stash
zu gehen. Gehen Sie einfach die list_stash
Funktion zu finden, und fügen Sie die --no-pager
Option auf ihren Aufruf an git log
oder das gesamte Skript, Set GIT_PAGER=cat
an der Spitze zu decken.
Andere Tipps
Ab 1.7.7.3, git config --global pager.stash false
erfüllt diese.
Alternativ können Sie less
zu verlassen konfigurieren, wenn es weniger als ein Wert der Bildschirm Ausgabe:
export LESS='-F'
Oder verbosely:
export LESS='--quit-if-one-screen'
Wenn Sie Farben in Ihrem git Ausgang haben, werden Sie wahrscheinlich wollen auch die -r
Flagge weitergeben müssen:
export LESS='-F -r'
stll = "!git --no-pager stash list"
ist dein Freund.