5

我正在尝试以非常特定的格式格式化我的 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

现在我正在尝试获取每个提交的参考(即标签/分支)信息。我可以使用该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占位符。我只是错过了正确的占位符吗?或者是否有另一种方法来格式化/显示参考以及我想要的自定义信息?

4

3 回答 3

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提供的,这样我们就可以部分地到达那里。然后将 SHA1git log -1与其他格式说明符一起反馈给我们,让我们完成剩下的工作。

于 2014-02-26T23:41:40.383 回答
1

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

请参阅Issac Trotts ( ) 的提交 ad6f028(2019 年 1 月 11 日(由Junio C Hamano 合并 -- --提交 a562a11中,2019 年 1 月 29 日)ijt
gitster

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
于 2019-12-30T21:19:22.887 回答
0

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

于 2012-10-20T20:30:38.883 回答