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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top