当我使用“git log”命令时,它不再隐式地通过“less”进行管道传输。

18

以前我只需要输入

git log

现在,我必须输入:

git log | less

为了达到相同的效果,我没有(有意地)更改任何参数。 我已经检查了我的全局配置:“〜/ .gitconfig”和我的项目Git配置“.git / config”,但我找不到任何可能导致这种情况的原因。 所有命令参数似乎都是用于退出此选项。

此外,以下任何一个都不起作用:

git config --add --global core.pager less
git log
或者
GIT_PAGER=less git log
或者
PAGER=less git log

只是猜测,但除了“global”之外,还要检查存储在特定仓库中的本地设置。 - quetzalcoatl
@quetzalcoatl 我澄清了我的原始问题以解决这个问题。我检查了两个配置文件。我可能会漏掉一些东西,但我没有看到任何可能引起它的东西。 - quinn
1
我遇到了完全相反的问题。我不想让 git log 每次都使用 less,我希望能够将其管道传输到其他东西,比如 grep。我该如何禁用它? - Michael Dorst
5个回答

8
“你试过拔掉插头再重新插上吗?”我打开了一个新的终端,这个问题就解决了。但我仍然非常好奇那个窗口的环境中可能会导致这种情况发生,所以我会让它保持打开状态一段时间,如果有人有任何想法,请告诉我 :)

最终我在终端中输入了“exit”,当我这样做时,我进入了一个较小的git日志。我输入了q,然后再次输入exit,终端关闭了。 - quinn
我遇到了同样的问题,已经持续了几个月了。至今仍然没有任何解决方案。 - dwj
对我来说,这是因为我在现有的“got log”命令中误按了某个键,导致它返回到命令提示符,但某种方式并没有完全重新连接到TTY(或其他什么,我不是这方面的专家)。尽管如此,我仍然不确定如何精确地再现。 - quinn

5

有两个参数可能会影响它:Git变量core.pager和环境变量$PAGER。请使用以下命令检查您的设置:

git config core.pager
echo $PAGER

其中一个应该设置为less

git config core.pagerecho $PAGER 的输出是什么? - CharlesB
git config core.pager 返回 "less"。我在问题中使用的语法相当于使用 export 命令(但仅限于当前运行的命令范围)。但是,为了完整起见,我执行了 export PAGER=less 并使用相同的问题运行了 git log,并且 echo $PAGER 返回 "less"。 - quinn
我不明白你发生了什么事,抱歉。 - CharlesB

3

当我在MSYS上遇到问题时,我找出了真正的原因。它只需要完整路径。例如:

git config --add --global core.pager /usr/bin/less

我想在Linux上应该是类似的。

很明显,根本问题是一个小问题导致git没有意识到PATH环境变量。


2
请参考配置变量core.pager: "用于分页输出的命令。可以通过GIT_PAGER环境变量覆盖。"

1

设置 git core.pager 将确保将日志输出定向到分页器:

git config --global core.pager less

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接