git log --oneline命令提供了HEAD信息,但将其通过管道或重定向到文件时会丢失该信息。

4

如果我使用git log --oneline命令,没有任何管道或文件重定向,它会提供关于HEAD位置和分支(下面示例中为主分支)的信息。

 $ 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和master的信息会消失。我尝试将stderr重定向到stdout,但这并没有任何影响。

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

8bc8511 Today # 12
1381438 Today # 11
d87d53a Today # 10
718aef9 Today # 9
b05e17e Today # 8
.....
2643d93 Initial commit

我想访问那些信息,但是怎么做呢?

1个回答

5

使用--decorate标志

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

来自git文档

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

打印出所显示的任意提交的引用名称。如果指定了“short”,则不会打印ref name前缀refs/heads/、refs/tags/和refs/remotes/。如果指定了“full”,则会打印完整的ref名称(包括前缀)。如果指定了“auto”,则如果输出到终端,则显示引用名称,否则不显示引用名称。“--decorate”选项是“--decorate=short”的简写。默认为log.decorate的配置值,如果已配置,否则为auto。

当没有指定--decorate时,默认值为auto,表示“如果要进入终端,则添加HEAD信息;否则不添加”。当您使用未带参数的--decorate时,默认值为short,这是您在问题中提到的短HEAD信息。


请您能否更详细地解释一下 --decorate 选项的含义? - Dima Chubarov
1
@DmitriChubarov,还好吗? - jeremysprofile

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