Git在--format中获取 - 源信息

时间:2012-10-03 16:27:16

标签: git git-log

我正在尝试以非常特定的格式格式化我的git日志。

我最初使用git log --format="%H,%an,%ae,%ad,%p"会产生以下输出(对于每次提交):

b05f827b41856e6f4bcfba20c32f58434ce3a5a6,Kevin Jalbert,kevin.j.jalbert@gmail.com,Fri Sep 7 14:43:16 2012 -0400,206f23d

现在我正在尝试获取每个提交的ref(即标记/分支)信息。我能够使用git log --source命令查看此信息,这显示了我想要的内容(即,提交SHA之后的ref):

commit 84deec66f94085ee3a0e6f6204f06296d7a1a903 refs/remotes/origin/HEAD
Author: Kevin Jalbert <kevin.j.jalbert@gmail.com>
Date:   Fri Sep 21 17:02:33 2012 -0400

    commit message

commit f1e1b8d11defc48839557db5e54a5a6f7ffe6cad refs/heads/issue_5
Author: Kevin Jalbert <kevin.j.jalbert@gmail.com>
Date:   Thu Sep 13 15:34:36 2012 -0400

    commit message

commit d7acdbd957d9b477f8849fd5a37882cdd78d8e1f refs/tags/v0.3.0
Author: Kevin Jalbert <kevin.j.jalbert@gmail.com>
Date:   Wed Sep 12 16:48:46 2012 -0400

    commit message

我要做的是在原始--format="..."命令的末尾包含此信息,以便输出如下:

 b05f827b41856e6f4bcfba20c32f58434ce3a5a6,Kevin Jalbert,kevin.j.jalbert@gmail.com,Fri Sep 7 14:43:16 2012 -0400,206f23d,refs/remotes/origin/HEAD

我似乎无法找到任何基于--source标志引用提交的分支/标记/ ref的格式占位符。我只是错过了正确的占位符吗?或者是否有另一种方法来格式化/显示ref以及我想要的自定义信息?

4 个答案:

答案 0 :(得分:1)

我也在寻找这个。我无法在git-log中找到标记,但以下内容将起作用,在CSV行的末尾添加一列:

$ git log --no-color --source --oneline --all | while read sha1 srcref subject
> do echo "$(git log -1 --format="%H,%an,%ae,%ad,%p" $sha1),$source"
> done

提供--oneline时,%h %<our missing format character> %s的格式为--source,这样我们就可以在那里使用。然后将SHA1与其余格式说明符一起送回git log -1,让我们完成其余的工作。

答案 1 :(得分:1)

%S是在版本2.21.0中添加的,以包含与“ --source”相同的值。

答案 2 :(得分:1)

在Git 2.21(2019年第一季度)中,自定义用户格式“ log --format”学习了%S原子,该原子表示遍历从其到达提交的尖端,即--source
我当时在“ Git log placeholder for branch”中提到过。

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

  

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

     

签名人:Issac Trotts

     

可以编写示例

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

结尾处的%S是一个新的占位符,该占位符为每次提交打印参考(标签/分支)

     

使用%d似乎是一种选择,但它仅显示分支中最后一次提交的引用。

示例:

C:\Users\VonC\git\git>git log --format="%H,%S" origin/maint
53a06cf39b756eddfe4a2a34da93e3d04eb7b728,origin/maint
67af91c47a6672b99e1f742123415f96cbafd19a,origin/maint
a7312d1a28ff3ab0a5a5427b35f01d943103cba8,origin/maint

然后,使用您的格式(附加%S--format="%H,%an,%ae,%ad,%p,%S"

C:\Users\VonC\git\git>git log --format="%H,%an,%ae,%ad,%p,%S" origin/maint
53a06cf39b756eddfe4a2a34da93e3d04eb7b728,Johannes Schindelin,johannes.schindelin@gmx.de,Wed Dec 4 23:10:12 2019 +0100,67af91c47a,origin/maint
67af91c47a6672b99e1f742123415f96cbafd19a,Johannes Schindelin,johannes.schindelin@gmx.de,Wed Dec 4 23:09:11 2019 +0100,da72936f54 a7312d1a28,origin/maint
a7312d1a28ff3ab0a5a5427b35f01d943103cba8,Johannes Schindelin,johannes.schindelin@gmx.de,Wed Dec 4 23:07:46 2019 +0100,7fd9fd94fb,origin/maint

答案 3 :(得分:0)

%d可能是您正在寻找的 - 它将显示每个提交的分支/标签引用。