为什么`git show`不提供有关重定向标准输出的分支的信息?

时间:2019-12-13 12:19:25

标签: git

以下是两个带有结果示例的命令:

$ git show

commit 6f367e05cc6457fd0c0fc59fe0476db06cffb383 (HEAD -> master, tag: v7.32, origin/master, origin/HEAD)
Merge: 94ecf1d8 f3ea52b0
Author: Pupkin <pupkin@server.com>
Date:   Fri Dec 13 12:49:12 2019 +0700

    Some commit description.

$ echo `git show`

commit 6f367e05cc6457fd0c0fc59fe0476db06cffb383 Merge: 94ecf1d8 f3ea52b0 Author: Pupkin <pupkin@server.com> Date: Fri Dec 13 12:49:12 2019 +0700 Some commit description.

重要的区别:在第二个结果中,没有有关分支的信息-“(“ HEAD-> master,标签:v7.32,origin / master,origin / HEAD)”

我还尝试了stdout和stderr的重定向,重定向到文件,grep和其他一些构造。在控制台中显示相同结果的其他情况-在其他情况下-没有分支信息。

为什么呢?

以及如何强制git返回整个消息?

1 个答案:

答案 0 :(得分:1)

如以上注释中的@ElpieKay所述,我需要在命令中使用键--decorate

来自Git manual

  

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

     

打印显示的所有提交的引用名称。如果指定了short,则不会打印ref名称的前缀refs / heads /,refs / tags /和refs / remotes /。如果指定了full,则将打印完整的引用名称(包括前缀)。如果指定了auto,则如果输出将输出到终端,则引用名称显示为好像给出了short,否则不显示引用名称。默认选项为 short

但是我很确定默认情况下默认使用auto代替short,如手册中所述。

此问题已解决。