git log --oneline 提供在管道或重定向到文件时丢失的 HEAD 信息

Leo*_*ard 4 git bash

当我执行没有管道或文件重定向的 git log --oneline 命令时,它会提供有关 HEAD 位置和分支的信息(下面示例中的 master )

 $ git log --oneline --color=never

8bc8511 (HEAD -> day_20190316) Today # 12
1381438 Today # 11
d87d53a Today # 10
718aef9 Today # 9
b05e17e Today # 8
....
2643d93 (master) Initial commit
Run Code Online (Sandbox Code Playgroud)

但是,当我通过 less 进行管道传输或将其重定向到文件中时,HEAD 和主信息就会消失。我尝试过重定向 stderr 以加入 stdout,但这没有什么区别。

$ git log --oneline --color=never 2>&1 | git log --oneline --color=never 2>&1 | /usr/bin/更多

8bc8511 Today # 12
1381438 Today # 11
d87d53a Today # 10
718aef9 Today # 9
b05e17e Today # 8
.....
2643d93 Initial commit
Run Code Online (Sandbox Code Playgroud)

我想访问这些信息,但是如何访问呢?

jer*_*ile 5

使用--decorate旗帜

git log --oneline --decorate --color=never | less
Run Code Online (Sandbox Code Playgroud)

来自git 文档

--decorate[=短|全|自动|否]

打印出显示的任何提交的引用名称。如果指定了short,则不会打印引用名称前缀refs/heads/、refs/tags/和refs/remotes/。如果指定了 full,则将打印完整的引用名称(包括前缀)。如果指定了 auto,则如果输出将发送至终端,则将显示引用名称,就像给出了 Short 一样,否则不显示引用名称。选项 --decorate 是 --decorate=short 的缩写。如果已配置,则默认为 log.decorate 的配置值,否则为 auto。

未指定时默认--decorate为自动,意思是“如果进入终端则添加 HEAD 信息,否则不添加”。--decorate当您不带参数指定时,它默认为short,这是您在问题中引用的短 HEAD 信息。