git log和git log --decorate有什么区别?

时间:2018-06-24 12:08:08

标签: git

我已经测试了这两个命令,但它们的输出之间没有任何区别。  the output

前端开发人员课程中的以下问题

使用您对订单git日志的了解,您是否在日志输出中看到标签? 正确的答案是否, git log --decorate 不是git log

它们之间有什么区别?

3 个答案:

答案 0 :(得分:1)

根据您使用的git版本,行为似乎有所变化。

较旧版本的git(例如1.8.x)默认为 not 修饰git log的输出。 git(从2.12.2版开始)的最新版本默认为--decorate=auto(当输出到终端时就像--decorate=short一样,否则就像--no-decorate一样)。

换句话说,对于版本1.8.3。运行git log,我看到:

commit 0b57f44b3371521f65eb7607310803c7e90dc023

但是在2.14.4中,我看到了:

commit 0b57f44b3371521f65eb7607310803c7e90dc023 (HEAD -> master, origin/master)

我可以使用git获得与旧版本git log --decorate相同的输出。

换句话说,如果您运行的是现代版本的git,则git loggit log --decorate的输出将没有差异。

答案 1 :(得分:0)

如上述@Mat注释所示,通过阅读git log文档可以回答这些类型的问题。以下是相关部分:

  

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

     

-decorate-refs =

     

-decorate-refs-exclude =   如果未给出--decorate-refs,则假装好像所有的refs都包括在内。对于每个候选人,如果它与--decorate-refs-exclude给出的任何模式匹配,或者与--decorate-refs给出的任何模式都不匹配,则不要将其用于装饰。

请注意,“装饰”本身默认为“短”。如果您没有从此参数看到不同的输出,则可能您没有任何提交引用。同样,请参见commit references

的文档

答案 2 :(得分:0)

在 Git 2.33(2021 年第 3 季度)中,文档更清楚地说明了 git log --decorate 默认值:

请参阅 commit a0538e5Đoàn Trần Công Danh (sgn)(2021 年 6 月 8 日)。
(由 Junio C Hamano -- gitster --commit 5ae1eb2 合并,2021 年 7 月 8 日)

<块引用>

doc/log: --decorate 的正确默认值

报告人:Andy AO
签字人:Đoàn Trần Công Danh

<块引用>

log --decorate 有两个不同的默认选项: * 如果 --decorate 不带任何参数,默认为 short * --decorate 和 {{1} 都不应该} ,默认为 --no-decoratelog.decorate

我们记录了前者,但没有记录后者。

让我们也记录它们。

auto 现在包含在其 man page 中:

<块引用>

选项 git log--decorate 的简写。

如果已配置,默认为 --decorate=short 的配置值,
否则,log.decorate