git 日志不显示所有项目

git log displays nothing for all projects

我已经使用 git 很多年了。但是突然,git log 命令开始什么都不显示。当我输入 git log 命令时,它只是结束并且什么都不显示。

命令 git rev-list --all --pretty 执行 return 所有提交以及其他信息。

commit b89bbaafc0854b57230d5e5018dd72d48106eb03
Merge: 96758ec 60c87e1
Author: Ali Ayub Khan <akhan.bscs15seecs@seecs.edu.pk>
Date:   Sat May 19 14:05:01 2018 +0500

Merge pull request #33 from hkedia321/master

fix #32 - update readme and ping heroku to prevent from sleeping

因此,"git log" 命令开始不显示任何内容。我卸载了 git 并重新安装了,但它仍然不起作用。这对所有项目(新旧项目)都是一样的。我正在使用 Ubuntu 16.04 LTS.Can 请有人帮我解决这个问题。

(我现在才找到移动到聊天的讨论。)

我建议使用 git --no-pager log,效果很好。然后我问 git var GIT_PAGER 产生了什么,以及重定向到什么程序;答案是:

$ git var GIT_PAGER
pager
$ which pager
/home/hkedia321/anaconda3/bin/pager

其他人询问了退出状态,它是 141:这表示 Linux 上的 SIGPIPE。

因此,这意味着位于此位置(/home/hkedia321/anaconda3/bin/pager)的程序存在某种错误。它不是一次显示一页输出,而是简单地退出而不显示任何内容,或者死于 SIGPIPE 信号。我会在这里注意 pager 在我自己的 Ubuntu 16.04 系统上是 /usr/bin/pager,它是 /etc/alternatives/pager 的符号链接,它本身是 /bin/less 的符号链接.

(我自己的 git var GIT_PAGER 产生 less 这样我就可以更直接地通过 /bin/less 了。)

因此您的两个选择是:

  • 修复此 pager 程序使其正常工作,或者
  • 避免这个特定的 pager 程序。

如果您更喜欢 less 作为寻呼机,后者就足够简单了,因为您可以简单地 运行:

git config --global core.pager less

(仅特定于 Git),或导出设置:

PAGER=less

在您的环境中,这就是我在 Linux 系统上所做的,在我的 .profile 文件中使用此代码片段:

# bash and sh use "type" a bit differently, but both will
# exit 0 if the command exists (or is an alias).
command_exists() {
        type "" >/dev/null 2>&1
}

# if less exists, use it as pager; if lesspipe exists, set its env too
command_exists less && {
        export PAGER=less
        export LESS=FRX
        command_exists lesspipe && eval $(lesspipe)
}

(这是特定于使用 sh 或 bash 的类 Unix 系统,尽管它试图进行自我调整)。