是否有一个命令行开关可以传递给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=猫
但我更喜欢命令行开关。
当前回答
最佳分页小于-R-F-X
# Global - all projects (if has no custom local pager)
git config --global core.pager '/usr/bin/less -R -F -X'
# Local - Only on project
git config core.pager '/usr/bin/less -R -F -X'
其他回答
--Git的任何寻呼机都不会告诉它不要使用寻呼机。如果输出适合单个屏幕,则将选项-F传递给less将告诉它不要分页。
用法:
git --no-pager diff
评论中的其他选项包括:
# Set an evaporating environment variable to use 'cat' for your pager
GIT_PAGER=cat git diff
# Tells 'less' not to paginate if less than a page
export LESS="-F -X $LESS"
# ...then Git as usual
git 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目录,因此,如果您已经位于存储库的子目录中,则对本地文件的任何引用都将不起作用。
最佳分页小于-R-F-X
# Global - all projects (if has no custom local pager)
git config --global core.pager '/usr/bin/less -R -F -X'
# Local - Only on project
git config core.pager '/usr/bin/less -R -F -X'
当我知道输出不是很长时,我喜欢不时禁用分页。为此,我发现了一个使用Git别名的妙招:
git config --global --add alias.n '!git --no-pager'
或者将以下内容添加到~/.gitconfig的[alias]部分:
n = !git --no-pager
这意味着您可以使用前缀n来关闭任何Git命令的分页,即:
git n diff # Show the diff without pager
git n log -n 3 # Show the last three commits without pager
git n show v1.1 # Show information about a tag
我的.gitconfig中有这个hunk,它似乎工作正常(diff和show都禁用):
[pager]
diff = false
show = false