为什么即使存在日志文件,'git log' 也是空的?

5

git log命令没有输出任何内容,即使".git/logs/refs/heads"中包含了最近提交的日志记录。

系统:
我在我的Ubuntu系统上卸载并重新安装了Git。

Linux ap 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

git rev-list 会输出任何内容吗? - georgebrock
你是否在某种程度上使用 less -F 作为分页器命令?在某些平台上,如果输入足够小以适合一页,则 less -F 不会输出任何内容。删除 -F 或添加 -X 可以解决这个问题。如果你运行 git log | cat 会发生什么? - Joshua Chia
4个回答

6

我遇到了相同的错误。问题出在我在.bashrc文件中定义了一个默认分页器,但位置不正确:

export PAGER=/usr/bin/more

执行git log未返回任何输出。我把位置改为/bin/more,问题得到解决。


它对我起作用了。我运行了“which more”,然后将PAGER设置为该目录。 - James

3

git log 不涉及 ".git/logs/" 目录。它读取的是 ".git/refs/" 目录。

git reflog 读取的是 ".git/logs/" 目录,用于记录分支末端更新的时间。


以下是我的 refs 结构及其内容:ap refs # find . ./remotes ./remotes/origin ./remotes/origin/HEAD ./heads ./heads/master ./tags ap refs # cat ./remotes/origin/HEAD ./heads/master 引用:refs/remotes/origin/master e239654193132ee1f030be82d895a695f8657df0 - saremapadhasa

0

正如Diego Pino所说,问题可能与git core.pager设置有关。

我写这篇文章是因为我遇到了同样的问题,但情况有所不同。在按照提示设置git core.pager设置部分中的空值后,我失去了使用git log的可能性,我的意思是命令的输出为空。这个设置的目的是不使用任何分页器,只将所有内容打印到stdout,但出了些问题。在.gitconfig中类似于以下内容:

[core]
    pager = " "

解决方案可能是在全局范围内(在用户的主目录下的.gitconfig文件)或整个系统的上下文中(在/etc/gitconfig中)设置core.pager设置:

git config --global core.pager more 

或者

sudo git config --system core.pager more

我更喜欢使用more作为长输出的分页器,但是我的git安装中默认的分页器是less - 选择适合您的。


0

尝试再次克隆您的存储库,看看错误是否仍然存在。

确保您没有定义GIT_DIRGIT_WORK_TREE环境变量,否则git日志将无法在您认为的git存储库上运行。

确保没有别名git,或者(就此而言)没有'log'的git别名。


无论是.gitconfig还是常规别名都没有定义git或log,而且echo $GIT_DIR $GIT_WORK_TREE为空。 - saremapadhasa
@user530302 和另一个 git clone 产生了完全相同的空白 git log - VonC

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