У меня есть несколько репозиториев git, которые принадлежат друг другу, и простой файл batch / bash, чтобы перебрать их. Я часто перебираю их с помощью команды журнала, чтобы быстро увидеть, в каком состоянии они находятся. Это работает отлично, за исключением одного: если сообщение фиксации длиннее, чем количество символов, моя консоль широкая (или имеет несколько строк), git показывает строку, затем новую строку с (END), и мне нужно нажать q, чтобы продолжить (я думаю, он передает вывод через что-то еще или что-то в этом роде). Пример:
> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log
625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log
dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)
Это довольно неудобно, так как мне нужно нажать q пару раз, в то время как я просто хотел бы увидеть все эти строки за один раз.
Как я могу отключить это поведение (желательно с сохранением этого формата журнала)?
Ответы:
В Git есть возможность отключить пейджер:
Если ваш пейджер обрезает строки, и вы хотите сохранить это поведение, либо перенаправьте его на
cut
...... или установите переменную среды
GIT_PAGER
перед вызовом:источник
--no-pager
этот параметр по умолчанию или даже лучше, если это необходимо? Я подумал о альясингеgitnp
кgit --no-pager
, но я думаю , что есть лучшее решение.git
для/usr/bin/git --no-pager
которой будет отключить пейджер для всех ваших GIT вызовов.git
не имеет встроенного пейджера. Вместо этого он следует философии Unix и использует все, что у вас есть$PAGER
.git
просто всегда использует$PAGER
вместо того, чтобы делать это случайно, в отличие от многих других плохо написанных инструментов. Единственная магияgit
есть в том , что , если$LESS
это не определено , оно будет определять$LESS
для значенияFRX
. Подробнее см. На github.com/git/git/blob/master/Documentation/config.txt#L766 .git
просто предоставляет переопределениеGIT_PAGER
, которое позволит вам определить пользовательское значение, которое будет использоваться вместо того,PAGER
когда git требует разбиения на страницы.Еще одно решение проблемы постоянного отключения пейджера именно при использовании
log
подкоманды:только для текущего репо:
git config pager.log false
для вашей установки git (т.е. всех репозиториев на вашем компьютере):
git config --global pager.log false
Как вы можете догадаться, то же самое работает, если пейджер должен быть включен или выключен для некоторых других подкоманд выборочно.
E. g. для
branch
подкоманды (которая печатает ветки) это будетgit config pager.branch false
Предлагаемое решение, возможно, более элегантно по сравнению с
используя
git --no-pager
каждый раз, когда вы запускаете определенную команду.Потому что, вполне возможно, вы не хотите набирать его каждый раз.
указание
git --no-pager
в качестве псевдонима дляgit
Потому что, вполне возможно, вы хотите избежать неявной глобальной конфигурации ИЛИ вы хотите, чтобы в некоторых случаях был включен пейджер .
полагаться на некоторые переменные среды, такие как
PAGER
илиGIT_PAGER
.Потому что для этого вам необходимо убедиться, что они установлены в вашем текущем сеансе терминала. И, если вы хотите, чтобы установить в какое - то пользовательском значение автоматически каждый раз , когда создаются ваш новый терминал, вам необходимо изменить один из раковинных бутстрапированных файлов , таких как , например
~/.bashrc
. Это не большая проблема. Но эти файлы начальной загрузки часто изменяются и другими приложениями и содержат множество других вещей, а не только то, что используется Git. Итак, теоретически лучше указать настройки, связанные с git,git config
а не вставлять их, например~/.bashrc
.Альтернативное решение для отключения
pager
для всех подкоманд это указать вcat
качестве утилиты мерзавца будет использовать для подкачки:git config core.pager cat
ИЛИgit config --global core.pager cat
Мой ответ несколько перефразирует приведенный ниже вопрос:
«запретить git diff использовать пейджер?»
https://stackoverflow.com/a/6986231/6103242
Это делается для того, чтобы указать на еще одно важное обсуждение.
источник
Отключить пейджер для всех команд:
источник
Вы перенаправляете его на less -F в случае, если --no-pager у вас не работает.
источник