【问题标题】:Git log placeholder for branch分支的 Git 日志占位符
【发布时间】:2023-04-01 04:08:01
【问题描述】:

git --pretty=format(在 git log 和 git show 中)是否有任何占位符用于显示提交所在的分支名称?

喜欢%H 提交哈希?

【问题讨论】:

  • 也许是这样:“使用--pretty,您可以在需要'装饰'的地方使用%d。”
  • 提交不在分支中,分支只是挂在特定提交上的 repo-local 标签。例如,大多数项目只有一个根,每个分支都可以追溯到那个根。 Git 不在乎哪个分支是你的“主”分支,这完全是一个解释问题。
  • 使用 Git 2.21(2019 年第一季度),git log --format=%S 将是在 git log 输出中添加分支占位符的官方方式。见my answer below

标签: git


【解决方案1】:

添加git log --decorate,它将显示分支、标签等。

  • 如果您想记录以显示图表,您可以添加--graph
  • 如果你使用基于 uxin 的操作系统,你可以使用这个.githelpers

来自日志文档:

--装饰 [=short|full|no]

打印显示的任何提交的引用名称。如果指定了short,则不会打印引用名称前缀refs/heads/、refs/tags/和refs/remotes/。如果指定了 full,则将打印完整的 ref 名称(包括前缀)。默认选项是短

.githelprs 脚本的输出:

【讨论】:

    【解决方案2】:

    提交不在分支中,分支只是挂在特定提交上的 repo-local 标签。例如,大多数项目只有一个根,每个分支都可以追溯到那个根。 Git 不在乎哪个分支是你的“主”分支,这完全是一个解释问题。

    你可以

    git branch --contains $thatcommit
    

    查看所有可以追踪该提交的祖先的分支,并且

    git log --branches --decorate --simplify-by-decoration --oneline \
            --ancestry-path --first-parent ^$thatcommit
    

    查看通过其第一父链接(即不是仅通过合并合并该提交的分支)追溯到该提交的所有分支。

    编辑:只说“分支”真的很容易,但对于新手来说,很难记住你在 git 中使用的每个名称都以非常短的顺序追溯到对象 db 中的一个其他未区分的对象—— refname 只是进入 repo 的一个方便的拇指。更迂腐正确的是“分支提示”甚至“分支提示提交”。

    分支引用的唯一特别之处在于它的完整拼写是“refs/heads/$branchname”,当git checkout 看到它时,它使HEAD 成为对它的符号引用 - - 所以更新head 的每个人都会更新分支提示,而查看HEAD 的每个人都会看到当前的分支提示。

    您可以在分支 refs 上挂起 repo-local 注释,几个方便的命令在 branch.$branchname config section 中查找它们的默认值。

    【讨论】:

      【解决方案3】:

      您现在(2019 年第一季度)有一个官方占位符,因为自定义用户格式“log --format”学习了%S 原子,它代表遍历到达提交的尖端,即--source

      参见Issac Trotts (ijt)commit ad6f028(2019 年 1 月 11 日)。
      (由 Junio C Hamano -- gitster -- 合并于 commit a562a11,2019 年 1 月 29 日)

      log:将 %S 选项(如--source)添加到log --format

      例如可以写成:

      git log --format="%H,%S"
      

      末尾的 %S 是一个新的占位符,用于打印 ref (tag/branch) 每次提交

      使用%d 似乎是一种替代方法,但它只显示最后一个的 ref 在分支中提交。

      例子:

      git checkout --orphan source-a &&
      test_commit one &&
      test_commit two &&
      git checkout -b source-b HEAD^ &&
      test_commit three
      

      表示git log --format=%S source-a source-b返回commits from a and b

      source-b
      source-a
      source-b
      

      【讨论】:

        【解决方案4】:

        使用--source 标志。

        来自文档:

        --来源

        打印出每次提交时在命令行中给出的引用名称。

        【讨论】:

          猜你喜欢
          • 2017-04-15
          • 1970-01-01
          • 2016-06-12
          • 2023-03-11
          • 1970-01-01
          • 1970-01-01
          • 2012-11-04
          • 2014-04-27
          • 1970-01-01
          相关资源
          最近更新 更多