是否有一个命令行开关可以传递给gitdiff和其他默认使用较少寻呼机的命令?我知道这些方法存在:

git diff | cat。。。删除所有语法突出显示gitconfig--global core.pager cat将global.gitconfig中的寻呼机设置为cat导出GIT_PAGER=猫

但我更喜欢命令行开关。


当前回答

这对我来说在Linux上使用Git版本2.1.4是有效的:

git config --global --replace-all core.pager cat

这使得Git使用cat而不是更少。cat只是将diff的输出转储到屏幕上,而没有任何分页。

其他回答

您可以使用pager.alias为diff添加一个别名,如下所示:

[alias]
  dc = diff
  dsc = diff --staged
[pager]
  dc = cat
  dsc = cat

这将保持颜色不变,并在“git-dc”调用时使用“cat”作为寻呼机。

此外,不要做的事情:

使用--别名中没有寻呼机。Git(1.8.5.2,Apple Git-48)会抱怨你试图修改环境。使用带有!sh或!吉特。这将绕过上面的环境错误,但它会将您的工作目录(出于本命令的目的)重置为顶级Git目录,因此,如果您已经位于存储库的子目录中,则对本地文件的任何引用都将不起作用。

关于管道时禁用的颜色:

使用--color可避免禁用着色。

git diff—颜色|更少-R

或者强制配置(例如.gitconfig):

[color]
        ui = on

git diff |小于-R

对于非彩色工具,请使用:

gitdiff--无颜色|一些基本工具

导出环境变量LESS=-R(在例如.bashrc中)默认情况下在“LESS”中启用颜色支持:

git diff|更少

Use

git config --global core.pager cat

为所有存储库删除所有命令的寻呼机。

您还可以使用寻呼机禁用单个Git子命令的分页<cmd>setting而不是core.pager,并且您可以更改每个Git存储库的设置(省略--global)。

请参阅man git配置并搜索寻呼机<cmd>了解详细信息。

文档中最近的更改提到了一种不同的方式来删除less的默认选项(“默认选项”是FRSX)。

对于这个问题,应该是(git 1.8+)

git config --global --replace-all core.pager 'less -+F -+X'

例如,Dirk Bester在评论中建议:

export LESS="$LESS -FRXK" 

这样我就可以用Ctrl-C从更少开始得到彩色diff。

Wilson F在评论和问题中提到:

less支持水平滚动,因此当行被截断时,less禁用“如果有一个屏幕就退出”,这样用户仍然可以向左滚动文本以查看被截断的内容。


这些修改在git 1.8.x中已经可见,如“始终为git diff使用寻呼机”(参见注释)所示。但文档刚刚被改写(2013年第4季度,第1.8.5或1.9位)。

Git命令使用的文本查看器(例如“less”)。该值将由shell解释。优先顺序为:$GIT_PAGER环境变量,那么core.pager配置,然后$PAGER,然后在编译时选择默认值(通常为“less”)。当LESS环境变量未设置时,Git将其设置为FRSX(如果设置了LESS环境变量,Git根本不会更改它)。如果您想选择性地覆盖Git的LESS默认设置,可以将core.pager设置为例如LESS-+s。这将由Git传递给shell,它将最终命令转换为LESS=FRSX LESS-+S。环境告诉命令设置S选项以剪切长线,但命令行将其重置为默认值以折叠长线。


关于新文件措辞背后的原因,请参见承诺97d01f2a:

config:重写core.pager文档

文本中提到了core.pager和GIT_pager,但没有给出优先顺序。从gitvar(1)文档中借用更好的描述。使用该机制允许系统范围、全局和每个存储库的配置文件不限于此特定变量。删除它以澄清段落。重写部分,说明如何将环境变量LESS设置为Git的默认值,以及如何选择性地自定义它。


注意:提交b327583(Matthieu Moy Moy,2014年4月,对于git 2.0.x/2.1,2014年第3季度)将默认删除S:

寻呼机:默认情况下从$LESS中删除“S”

默认情况下,如果用户未设置$LESS,Git会将$LESS设置为-FRSX。FRX标志实际上对Git来说是有意义的(F和X是因为有时Git管道的输出是短的,R是因为Git管道为输出着色)。另一方面,S标志(斩长线)与Git无关,而是用户偏好的问题。Git不应决定用户更改LESS的默认值。更具体地说,S标志会伤害在寻呼机中查看不可信代码的用户,因为补丁看起来像:-旧代码;+新的良好规范;[…很多标签…]恶意代码;将看起来与:-旧代码;+新的良好规范;喜欢旧行为的用户仍然可以将$LESS环境变量显式设置为-FRSX,或将core.pager设置为“LESS-S”。

文件内容如下:

环境不会设置S选项,但命令行会设置,指示less截断长行。类似地,将core.pager设置为less-+F将从命令行停用环境指定的F选项,停用less的“如果一个屏幕退出”行为。可以专门为特定命令激活一些标志:例如,将pager.fault设置为less-S仅对git责备启用行截断。

这对我来说在Linux上使用Git版本2.1.4是有效的:

git config --global --replace-all core.pager cat

这使得Git使用cat而不是更少。cat只是将diff的输出转储到屏幕上,而没有任何分页。