我正在尝试以非常特定的格式格式化我的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以及我想要的自定义信息?
答案 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 ad6f028的Issac 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
可能是您正在寻找的 - 它将显示每个提交的分支/标签引用。