为什么较少由git不必要地运行?


22

当我git branch从bash或csh 运行时,它会自动将输出通过传递less。但是,存储库中只有几个分支,这是不必要的,这很烦人,因为一旦我少退出,分支列表就会消失。

检查~/.gitconfig文件和本地.git/config文件不会发现有关寻呼机或任何其他会导致这种情况的信息。否则,我在网络搜索中没有发现任何有用或有希望的东西。

为什么会发生这种情况?less在需要时(例如git log,有很多历史记录的情况下),我可以做些什么(如果有的话),而在没有其他情况的情况下(例如git branch只有2个或3个分支的a)呢?


4
通常git不知道任何命令会有多少输出,因此默认情况下它会通过分页器发送所有内容,而发送量可能会更少。
伊卡洛斯

6
首先做一个新的-nix安装放export LESS=-X.profile。这样可以避免“清理”屏幕。我讨厌标准设置会清除屏幕,因为我经常需要剪切和粘贴内容或将其用作参考。
彼得-恢复莫妮卡

3
@Peter要明确(没有双关语),只有不希望屏幕清除行为的人才能这样做。
David Z

@icarus:这似乎合乎逻辑。但是,最近我的行为发生了变化。我不知道为什么-可能是由于公司安全人员“处于高潮”而迫使他们改变了一些环境变量,他们似乎并不在乎他们给其他人的工作带来多大的困难。无论如何,git突然从我认为合理的行为转变为通过更少的方式运行单行输出,以至于当我停止较少时,输出会丢失。
GreenMatt

如果行为最近发生了变化,则至少可以将LESS变量的设置添加到系统范围的Shell启动文件中,例如/etc/profile、/etc/profile.d/*、/etc/bash.bashrc,您的环境中是否有此变量?
伊卡洛斯

Answers:


35

您可以设置以下内容:

git config --global core.pager 'less -FRX'

这将确保less意志

  • 退出如果整个文件可以在第一屏幕上显示(F
  • 输出原始控制字符以进行终端格式化(R
  • 砍长线(S
  • 不要将init / de-init字符串发送到终端-避免在退出(X)时清除屏幕

编辑:删除S基于彼得·A·谢德的评论的选项


7
--global如果希望仅将其应用于当前存储库,则将其省略。
mosvy

8
将环境变量设置LESS-FR,在X和S中添加口味是另一种方法。
伊卡洛斯


11
OP最有可能发现这种令人讨厌的行为。我想可以设置环境变量,export PAGER='less -FRSX'而git会兑现(没有特定的git配置)。顺便说一句,这-S很危险,因为它会默默地丢弃输出。
彼得-恢复莫妮卡

4

对于调整less的行为,这里有一些很好的答案,但是由于我的灰胡子手指习惯于|more在需要时进行键入,并且由于我更喜欢​​水银而不是git,因此我热衷于

git config --global core.pager cat

3
手册页git-config指出,core.pagershell打算解释的值。当您将其设置no为时,它会尝试执行该命令no(很可能不存在),然后退回到简单地输出内容。您仍然会在顶部看到错误消息。您可能想要做的是将其设置为cat
QIS

1
这是一个很好的资料片,但我喜欢的是,它不执行任何东西。该cat没用了,我不是特别相信Linux的util的维护者不能改变什么猫不(见ls报价文件崩溃)。也许我应该改用“永远不要”。这样的程序不太可能存在。
dgc

7
设置core.pager为空字符串(git config core.pager '')或cat无法运行在所有的东西。如果您不相信我,可以自己解决;-)没有任何理由将其设置为虚拟命令,例如no
mosvy,

万分谢意!我不知道空字符串不会导致命令执行。关于cat,您是说git在传呼程序代码中对该字符串具有特殊情况-即,cat实际上是“空”的同义词吗?我希望它能执行cat
dgc

确实确实如此。哎呀 但也有好处:我一直在寻找更多方式证明自己对git的厌恶。
dgc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.