Похоже на stash, и любая другая не встроенная команда (записанная как сценарий оболочки, а не в C) пропускается на этапе настройки пейджера. Я отправил записку в список рассылки git с вопросом об этом; похоже, это известная проблема, но ее не совсем легко исправить.
Основная причина, по которой вы не видите эффекта от своего псевдонима, заключается в том, что git молча игнорирует псевдонимы для встроенных команд; идея в том, что вы никогда не захотите сделать команду недоступной. Чтобы псевдоним имел шанс быть запущенным, вам нужно назвать его чем-то отличным от stash
.
Однако я считаю, что простые псевдонимы не могут влиять на среду, в которой запускается команда git, которая обычно включает параметры, передаваемые самой git
. Если я использую псевдоним, как ваш:
git config alias.foo --no-pager stash
git foo
fatal: alias 'foo' changes environment variables
Если вы хотите сделать это правильно, вам придется использовать !git --no-pager stash
, чтобы он порождал подоболочку и вызывал git.
Еще одно временное исправление, поскольку это сценарий оболочки, заключается в прямом редактировании libexec/git-core/git-stash
. Просто найдите функцию list_stash
и добавьте параметр --no-pager
к ее вызову на git log
, или, чтобы охватить весь сценарий, установите GIT_PAGER=cat
вверху.