Git diff он всегда выводится меньше, даже если он мал или отсутствует

Когда я использовал Git Bash (Git для Windows), если команда (например, git diff) имела короткий вывод (я предполагаю, что меньше высоты терминала) он просто печатает как вывод, теперь в Babun (Cygwin) каждая команда Git кажется менее просматриваемой, даже если она одна строка или полностью пустая. "Каждый", возможно, слишком смелый, git status - нет. Похоже, что в одном из них была некоторая привязка к одной из них, а другая - нет, и я не знаю, что это такое.

Как я могу заставить Git вести себя так, чтобы при коротком выходе он не использовал меньше и вместо этого просто выводил его.

Изменить: В Git Bash мой пейджер для Git равен 'less -x4' (для 4 вкладок ширины), -F. Кроме того, переменные среды LESS, PAGER и GIT_PAGER пусты. Поэтому я понятия не имею, почему Git Bash ведет себя так, но, к счастью, я получил некоторую помощь о том, как запустить Babun (Cygwin).

Обновление Hind-sight: (это, вероятно, неправильно, см. примечание 2017-01-12.) Я думаю, что Git Для Windows и/или по умолчанию терминал не протирает экран при закрытии меньше - я видел это поведение где-то еще, что было несвязанным (закрытие меньше, и экран не был протерт), поэтому я думаю, что это происходит. Почему Cygwin и терминал mintty выполняют очистку, а MINGW (или Msys2? Whatever Git Для Windows использует) на терминале Windows не выходит за рамки моих знаний.

Сообщение об обновлении Hind-sight Googling: Оказывается, вышеупомянутая ревальвация была достаточной информацией для решения Google! Я отправлю его сейчас.

2017-01-12: Похоже, что он не вытирал его именно потому, что LESS не был установлен. Согласно man git config...

core.pager
    [...]

    When the LESS environment variable is unset, Git sets it to FRX
    (if LESS environment variable is set, Git does not change it at
    all). If you want to selectively override Git’s default setting
    for LESS, you can set core.pager to e.g.  less -S. This will be
    passed to the shell by Git, which will translate the final
    command to LESS=FRX less -S. [...]

Ответ 1

Schwern ответ является половиной правильной. Для того, о чем я спрашивал, это, вероятно, правильный ответ, я просто использовал неправильные слова. Я не хотел этого делать:

   -F or --quit-if-one-screen
          Causes less to automatically exit if the entire file can be dis‐
          played on the first screen.

Это ничего не значит для короткого выхода! Если core.pager - less -F, а ваш журнал меньше одного экрана, вы ничего не видите.

Что вы, возможно, хотите, это less -FX или, может быть, less -X.

   -X or --no-init
          Disables sending the termcap initialization and deinitialization
          strings  to  the  terminal.   This is sometimes desirable if the
          deinitialization string does something unnecessary, like  clear‐
          ing the screen.

Этот вопрос над суперпользователем привел меня к этому.

Используя -FX, если журнал меньше одного экрана, он просто выводит его (как будто на cat).

Использование только -X будет по-прежнему открываться less, если выход меньше одного экрана, но оставит его на терминале, если вы q uit, если вы не q uit сразу можете на самом деле используйте less как обычно. После того, как вы попытаетесь выполнить поиск, хотя он приводит его в "реальное" меньше и до сих пор не стирает, когда это делается, что раздражает, потому что окна теперь полны ~.


Резюме

  • Если вам все равно, что происходит с коротким выходом, используйте less
  • Если вы хотите, чтобы на экране отображался короткий вывод, как будто на cat используйте less -XF
  • Если вы хотите найти короткий вывод (хотя это меньше одного экрана), используйте less -X, но вам еще нужно нажать q.

Ответ 2

Вы можете настроить git на использование cat в качестве пейджера (вместо less).

git config --global core.pager cat

Это добавит раздел

[core]
    pager = cat

в файл ~/.gitconfig и пропустите все через cat, т.е. просто отобразите его.

Обсуждалось здесь Как предотвратить git diff от использования пейджера? более подробно.

Ответ 3

Это не Git вещь, это свойство вашего пейджера. Git не знает, как долго будет производиться вывод, поэтому он всегда будет выводиться с помощью вашего пейджера.

Настройте свой пейджер, чтобы выйти, если ваш выход меньше одного полноэкранного. С less, что -F. Вы можете установить переменную среды less с помощью переключателей по умолчанию.