Git以--format格式获取源信息

问题描述 投票:5回答:4

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

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

b05f827b41856e6f4bcfba20c32f58434ce3a5a6,Kevin Jalbert,[email protected],Fri Sep 7 14:43:16 2012 -0400,206f23d

现在,我正在尝试获取每次提交的参考(即标记/分支)信息。我可以使用git log --source命令查看此信息,并且可以准确显示我想要的内容(即,位于提交SHA之后的引用):

commit 84deec66f94085ee3a0e6f6204f06296d7a1a903 refs/remotes/origin/HEAD
Author: Kevin Jalbert <[email protected]>
Date:   Fri Sep 21 17:02:33 2012 -0400

    commit message

commit f1e1b8d11defc48839557db5e54a5a6f7ffe6cad refs/heads/issue_5
Author: Kevin Jalbert <[email protected]>
Date:   Thu Sep 13 15:34:36 2012 -0400

    commit message

commit d7acdbd957d9b477f8849fd5a37882cdd78d8e1f refs/tags/v0.3.0
Author: Kevin Jalbert <[email protected]>
Date:   Wed Sep 12 16:48:46 2012 -0400

    commit message

我想做的是在原始--format="..."命令的末尾包含此信息,这样我将得到如下输出:

 b05f827b41856e6f4bcfba20c32f58434ce3a5a6,Kevin Jalbert,[email protected],Fri Sep 7 14:43:16 2012 -0400,206f23d,refs/remotes/origin/HEAD

我似乎找不到任何基于--source标志引用提交的分支/标记/引用的format占位符。我只是缺少正确的占位符吗?还是有另一种方式来格式化/显示引用以及我想要的自定义信息?

git git-log
4个回答
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,就可以完成其余的操作。

0
投票
%d可能就是您要寻找的-它会显示引用每个提交的分支/标签。

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

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

请参阅commit ad6f028Issac Trotts (ijt)(2019年1月11日)。

[[在ijt中由Junio C Hamano -- gitster --合并,2019年1月29日]

[gitster:将%S选项(例如commit a562a11)添加到log

签名人:Issac Trotts

例如可以写

log

末尾的--source是一个新的占位符,对于每次提交,该新占位符

打印出参考(标记/分支)。

使用log --format似乎是一种选择,但它只显示分支中最后一次提交的引用。
© www.soinside.com 2019 - 2024. All rights reserved.