即使它很小或没有输出,Git diff总是会输出更少

Cap*_*Man 18 git

当我使用Git Bash(Git For Windows)时,如果一个命令(比如git diff)有一个短输出(我猜测小于终端的高度)它只会打印为输出,现在在Babun(Cygwin)每个Git命令似乎即使它是一条线或完全空的,也要少看."每一个"都可能过于大胆,git status不是.看起来其中一个中有一些预捆绑设置,另一个没有,我不知道它是什么.

我怎样才能使Git表现得如此,当输出短时它不会少用,而只是输出它.

编辑:在git bash中我的git寻呼机是' less -x4'(4个宽度标签),没有-F.此外,环境变量LESS,PAGER以及GIT_PAGER是空的.所以我不知道为什么git bash表现得像这样,但幸运的是我已经得到了一些关于如何让Babun(Cygwin)开始的帮助.

事后更新:(这可能是错误的,请参阅2017-01-12注释.)我认为Git For Windows和/或默认终端在关闭时不会擦除屏幕 - 我在其他地方看到这种行为无关(关闭较少,屏幕没有被擦除)所以我认为这是正在发生的事情.为什么Cygwin和mintty终端在Windows终端上擦除和MINGW(或者Msys2?Whatever For Windows使用)并不是我的知识领域.

后见之明更新帖子谷歌搜索:结果显示上述启示足以让谷歌获得解决方案!我现在就发布.

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. [...]
Run Code Online (Sandbox Code Playgroud)

Cap*_*Man 17

Schwern的回答是正确的.对于我的要求它可能仍然是正确的答案,我只是使用不正确的单词.我想要的不是这个:

   -F or --quit-if-one-screen
          Causes less to automatically exit if the entire file can be dis?
          played on the first screen.
Run Code Online (Sandbox Code Playgroud)

这对于短输出没有任何意义!如果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.
Run Code Online (Sandbox Code Playgroud)

超级用户的这个问题让我想到了这一点.

使用-FX如果日志小于一个屏幕那么它只是将其输出(仿佛cat).

如果输出小于一个屏幕,则仅使用-X仍将打开less,但q如果您不q使用,则将其保留在终端上,如果您不立即使用,则实际上可以less正常使用.一旦你尝试搜索虽然它使它变得"真实"少,并且仍然不会在完成时擦除,这很烦人,因为窗口现在充满了~.


摘要

  • 如果您不关心短输出会发生什么,请使用 less
  • 如果您希望将短输出放在屏幕上,就像cat使用一样less -XF
  • 如果你想搜索短输出(即使它少于一个屏幕)然后使用less -X,但你必须仍然按下q.

  • 如果您希望这种行为无处不在,请将其添加到您的环境变量中:`export LESS="--no-init --quit-if-one-screen"` (2认同)

Rob*_*ino 6

快速回答:将以下行保存到您的 .bashrc

export LESS=eFRX
Run Code Online (Sandbox Code Playgroud)

How do I Prevent git diff from using a pager?的答案涵盖了原因和原因。OP实际上希望完全删除分页。