前言
平时会在 windows+linux 两种环境下进行开发,版本控制软件用 git 比较多,但是一直有个小问题,在 windows 下使用 git Bash
比较顺手,但是在 linux 使用 git 部分命令的时候,常常会打开一个新的窗口,按q键才能退出,比如 git branch
、git log
、git show
等等。
如果是使用 git log
查询日志后想进行合并或者回退等操作时,因为日志信息已经退出没有显示在当前窗口,这种情况会比较麻烦,有时候还需要额外再查询一次,还有就是 git branch
命显示内容常常较少,单独打开一个窗口也没有必要,所以想单独设置这种情况,后来查询资料发现,这与 git 的 pager 设置有关,特此记录一下。
什么是 pager
pager 其实就是分页器,也就是对一大段内容进行分页显示的工具,git 在一些版本中默认使用的是 less 工具,不同的版本默认设置会有差异,这也就是造成我在 windows 下没有自动分页,而在 linux 下会打开新窗口进行分页的原因。
git 的分页器可以通过 core.pager
来进行设置,他会被 git 命令行解释,影响分页器的变量有多个,他们起作用的顺序依次是 $GIT_PAGER
环境变量,core.pager
git配置,$PAGER
环境变量,如果这些都没有设置,默认会选择编译时的选项(通常为less),具体细节可以参考官方文档 git core.pager。
设置 core.pager
了解了上面的原理,我们就知道只要单独修改 git 配置就可以了,默认的分页器是 less,我们只要设置了 core.pager
就可以影响结果,所以在 git Bash 中执行下面的语句即可。
1 | git config --global core.pager '' |
其实就是将分页器清空就行了,这样再执行 git branch
的时候就不会出现分页的情况了。
更精细的设置
设置 core.pager
这项配置后对 less 分页器进行了全局屏蔽,虽然 git branch
这种显示内容少的命令比较方便了,但是执行 git show
的时候不分页反而会显得混乱,有没有单独设置每个 git 命令的配置呢?
答案当然是肯定的,比如上面提到的这种情况,我们只想屏蔽 git branch
命令的分页,而想保留git show
和 git log
的分页显示,就可以单独执行下面的命令。
1 | git config --global pager.branch false |
这样就可以达到只屏蔽 git branch
命令的分页结果了。
less and more
临时插播个知识点,less 和 more 都是 linux 的文本显示工具,那么它们谁更厉害一点呢?从名字上来看应该是 more 更厉害,但实际上是 less 更厉害,less 在 more 的基础上加上了后退功能(据说最初版本more不能后退,现在的常见版本已经支持后退功能了),支持上下键翻页,并且速度更快一点,所以在 linux 的世界一直流传着 “less is more” 这句话。另外 more 退出后会在 shell 上留下刚显示的内容,而 less 不会。
总结
- 使用
git config --global core.pager ''
命令可以屏蔽 git 默认的分页器 less - 使用
git config --global pager.branch false
命令可以只关闭git branch
命令的分页显示 - less 命令比 more 命令更加强大,支持上下键翻页,退出后不会在 shell 显示刚才的内容
学而不思则罔,思而不学则殆。动而不思则徒,思而不动则颓。
2021-3-14 17:14:55