以下是两个带有结果示例的命令:
$ 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返回整个消息?
答案 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
,如手册中所述。
此问题已解决。