git 命令错误地静音:git 2.17.1 on Ubuntu 18.04.1 LTS

git commands are incorrectly silent: git 2.17.1 on Ubuntu 18.04.1 LTS

我刚刚升级了我的 OS 和 gitgit loggit diffgit branch 等命令不正确。

$ git clone git@github.com:ropensci/drake
Cloning into 'drake'...
remote: Enumerating objects: 482, done.
remote: Counting objects: 100% (482/482), done.
remote: Compressing objects: 100% (341/341), done.
remote: Total 35298 (delta 377), reused 205 (delta 136), pack-reused 34816
Receiving objects: 100% (35298/35298), 88.73 MiB | 13.48 MiB/s, done.
Resolving deltas: 100% (28670/28670), done.
$ cd drake/
$ echo 123 > newfile
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        newfile

nothing added to commit but untracked files present (use "git add" to track)
$ git diff 
$ git log -1
$ git branch
$ git --version
git version 2.17.1
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"

编辑:使用 GIT_TRACE:

$ GIT_TRACE=1 git log -1
08:13:20.414948 git.c:344               trace: built-in: git log -1
08:13:20.417438 run-command.c:646       trace: run_command: unset 
GIT_PAGER_IN_USE; LESS=FRX LV=-c pager

他们很好。

如果你没有输出,终端中将没有任何内容。


git status

您创建了一个新文件,但您没有添加或提交它,因此没有任何更改。

  • 您看到此文件带有 git status

git diff (no parameters)

打印出工作目录和索引之间的差异。


git log -1

git log -1 应该在您的日志中打印最后一次提交。

显然,git 的 2.20 版刚刚发布:https://github.com/git/git/releases. I downloaded it and installed it from the source,现在我可以在控制台中看到所有内容。我仍然不知道 git 2.17 有什么问题(如果有的话)。

从这里问题就很清楚了:

08:13:20.417438 run-command.c:646       trace: run_command: unset
GIT_PAGER_IN_USE; LESS=FRX LV=-c pager

(我不确定为什么这一行会像这样分成两行)。有效的 git status 命令是 而不是 使用寻呼机。 git clone 也没有使用您的寻呼机。但是,git branchgit diffgit logdo 默认使用寻呼机,它显然设置为 pager

您系统上的 pager 命令或别名似乎可以通过读取标准输入来工作,但什么也不显示。因此 git branch 列出的 master 分支、git diff 的差异(如果有的话)和 git log 的日志列表都被这个 pager 命令吃掉并抛出离开,让你没什么可看的。

安装新版本的 Git 可能会将您的传呼机改回更常见的 less 设置,而不是这个损坏的 pager.