首页 > 解决方案 > git log --oneline 提供管道或重定向到文件时丢失的 HEAD 信息

问题描述

当我执行没有管道或文件重定向的 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

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

$ 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

我想访问该信息,但是如何访问?

标签: bashgit

解决方案


使用--decorate标志

git log --oneline --decorate --color=never | less

来自git 文档

--decorate[=short|full|auto|no]

打印显示的任何提交的引用名称。如果指定了short,则不会打印引用名称前缀refs/heads/、refs/tags/和refs/remotes/。如果指定了 full,则将打印完整的 ref 名称(包括前缀)。如果指定了 auto ,则如果输出将发送到终端,则显示参考名称,就好像给出了 short 一样,否则不显示参考名称。默认选项是短的。

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


推荐阅读