Всегда используйте пейджер для git diff

Я использую less в качестве пейджера git.

Если вывод git diff читается на одной странице, мой git выводит вывод на экран. Иногда я слишком быстро набираю Ctrl+D (полстраницы вниз), что убивает мой терминал. Есть ли возможность включить пейджер для git diff, даже если вывод очень маленький?

Не работает:

  • git -p diff
  • git --paginate diff
  • git настройки: pager.diff = true

person Dave Halter    schedule 10.09.2012    source источник
comment
связанные: stackoverflow.com/questions/2183900/   -  person Trevor Boyd Smith    schedule 28.03.2019


Ответы (1)


Это контролируется параметром -F (--quit-if-one-screen) меньше.

Git по умолчанию использует параметры FRSX for/of less, если ни один из них не указан в переменных среды $LESS или $GIT_PAGER. Чтобы изменить его, укажите параметр core.pager и установите его на RSX:

git config --global core.pager 'less -+F'

Старые версии Git рекомендовали в своей документации следующее:

git config --global core.pager 'less -+$LESS -RSX'
person knittl    schedule 10.09.2012
comment
git по умолчанию не использует FRSX. Я подозреваю, что вы получаете эти значения по умолчанию из переменной среды LESS или из GIT_PAGER, что предлагает другое (imo более простое) решение. А именно, убедитесь, что F не появляется в LESS или GIT_PAGER. Если git действительно использует значения по умолчанию, когда PAGER и GIT_PAGER не установлены, это меня удивит, но, возможно, я ошибаюсь. Документация? - person William Pursell; 21.11.2012
comment
@WilliamPursell: Документация Git была недавно обновлена, чтобы отключить параметры в более обратной совместимости. Мой код был напрямую скопирован со (старой) справочной страницы — сейчас я обновил его. В документации также написано: «Git устанавливает для переменной LESS значение FSRX, если она не установлена». - person knittl; 22.11.2012
comment
@Leonmax: конфигурация справки git - person knittl; 01.10.2013
comment
Может потребоваться добавить '-r', чтобы включить интерпретацию цветов ANSI. - person dset0x; 26.11.2014
comment
-E — еще один хороший вариант. На самом деле он завершает работу less, если страница меньше экрана. Я думал, что это сделает только -F, но вам также нужны -E (--QUIT-AT-EOF). - person Geremia; 25.01.2016
comment
Вы также можете захотеть -c, чтобы вывод всегда начинался сверху и заполнял экран. - person Chris Martin; 07.11.2016
comment
Я использую diff-so-fancy, который по умолчанию использует параметры -RFX для уменьшения. Этот ответ указал мне правильное направление, я удалил -F из вариантов и теперь получаю то, что хочу. - person verboze; 28.09.2017
comment
Никогда не используйте -r, если вы действительно не знаете, что делаете, всегда предпочитайте -R. Я только что потратил полчаса на отладку этого. -R означает пропустить управляющие коды, которые меньше понимает, и обновить модель терминала меньшего. Принимая во внимание, что -r означает пропустить все escape-коды и игнорировать их; удачи. (Обычно это незаметно искажает вывод.) - person Glenn Willen; 17.06.2020