Как сделать git log not prompt для продолжения?
У меня есть несколько репозиториев git, которые принадлежат друг другу, и простой пакетный /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 пару раз, тогда как мне просто хотелось бы увидеть все эти синглы за один раз.
Как я могу отключить это поведение (желательно, сохраняя этот формат журнала)?
Ответы
Ответ 1
Git имеет возможность отключить пейджер:
git --no-pager log --decorate=short --pretty=oneline -n1
Если ваш пейджер разрезает линии и вы хотите сохранить это поведение, либо труба до cut
...
git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS
... или установите переменную окружения GIT_PAGER
перед вызовом:
GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1
Ответ 2
Еще одно решение проблемы постоянного отключения пейджера, особенно при использовании подкоманды log
:
Как вы можете догадаться, то же самое работает, если пейджер необходимо включить или отключить для некоторых других подкоманд выборочно.
Например для подкоманды branch
(которая печатает ветки) это будет
git config pager.branch false
Предлагаемое решение, возможно, более элегантно по сравнению с
-
используя git --no-pager
каждый раз, когда вы запускаете определенную команду.
Потому что, вполне возможно, вы не хотите вводить его каждый раз.
-
указав git --no-pager
в качестве псевдонима для git
Потому что, вполне возможно, вы хотите избежать неявной глобальной конфигурации ИЛИ вы хотите, чтобы пейджер был включен в некоторых случаях.
-
полагаться на некоторые переменные окружения, такие как PAGER
или GIT_PAGER
.
Потому что для этого вам нужно убедиться, что они установлены в вашем текущем терминальном сеансе. И, если вы хотите, чтобы они автоматически устанавливались на какое-то пользовательское значение при каждом создании нового терминала, вам нужно изменить один из загруженных в оболочку файлов, например, ~/.bashrc
. Это не большая проблема. Но эти загруженные файлы часто изменяются и другими приложениями и содержат множество других вещей, не только используемых Git. Таким образом, теоретически, лучше указывать связанные с git config
настройки, используя git config
а не помещать их, например, в ~/.bashrc
.
Альтернативное решение для отключения pager
для всех подкоманд - указать cat
поскольку утилита git будет использовать для подкачки:
-
git config core.pager cat
ИЛИ -
git config --global core.pager cat
Мой ответ несколько перефразирует следующий:
"запретить git diff использовать пейджер?"
fooobar.com/questions/17467/...
Было упомянуто, чтобы указать на другое соответствующее обсуждение.
Ответ 3
Вы передаете его на меньшее -F в случае, если -no-пейджер не работает для вас.
git log --decorate --oneline -5 | less -F
Ответ 4
Отключить пейджер для всех команд:
git config --global core.pager ''