如何使用 git log --format= 提取changeid?

spi*_*e88 5 git

我已经通过了文档

git log --format

但我没有看到使用命令 git log --format 提取 Change-Id 的方法(如下面的 Change-Id 示例所示:Ic8aaa0728a43936cd4c6e1ed590e01ba8f0fbf5b)。

$ git log -1

  commit 29a6bb1a059aef021ac39d342499191278518d1d

  Author: A. U. Thor <author@example.com>

  Date: Thu Aug 20 12:46:50 2009 -0700

      Improve foo widget by attaching a bar.
      We want a bar, because it improves the foo by providing more
      wizbangery to the dowhatimeanery.
      Bug: #42
      Change-Id: Ic8aaa0728a43936cd4c6e1ed590e01ba8f0fbf5b
      Signed-off-by: A. U. Thor <author@example.com>
      CC: R. E. Viewer <reviewer@example.com>
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?提前致谢!

tor*_*rek 4

就git而言,没有更改ID。(这只是消息正文中的一行,git 可以为您提供消息正文,或隐藏消息正文,但它不会为您提供消息正文之外的单独行。1

要将输出限制为git log仅消息正文,请使用%b. 要将输出限制为仅消息主题,请使用%s。要获得“原始正文”(主题+正文),请使用%B.

无论如何,您都需要一些外部程序来从消息正文中剪出有趣的行。正如其他人已经评论过的那样,grep非常适合这一点。


1除非你算第一行(主语、%s部分)并且%B当你说“主体”时指的是“原始主体”(部分)。然后%s会给你第一行。与往常一样,这些描述有些模糊和松散,因此当有人说“消息正文”时,通常需要澄清其含义。“你指的是原始的主体和身体,还是身体减去主体?” 这就是使用实际格式指令 ( %s, %b, %B) 真正发挥作用的地方,因为它们是明确的。