是否有一个命令行开关可以传递给gitdiff和其他默认使用较少寻呼机的命令?我知道这些方法存在:
git diff | cat。。。删除所有语法突出显示gitconfig--global core.pager cat将global.gitconfig中的寻呼机设置为cat导出GIT_PAGER=猫
但我更喜欢命令行开关。
是否有一个命令行开关可以传递给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的输出转储到屏幕上,而没有任何分页。