首页 > 解决方案 > git log 不显示所有项目

问题描述

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

该命令git rev-list --all --pretty确实返回所有提交以及其他信息。

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。有人可以帮我解决这个问题吗?

标签: linuxgitubuntugithubgit-log

解决方案


(我现在才发现转移到聊天的讨论。)

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

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

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

所以,这意味着这个位置的程序——<code>/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 "$1" >/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 系统,尽管它试图进行自我调整)。


推荐阅读