从git-show输出中提取提交消息的正文

ctehm74n  于 2023-02-11  发布在  Git
关注(0)|答案(2)|浏览(117)

上下文

让我们假设我有以下提交:

PS C:\temp\2021-05-06> git show eb60d3426333b6b6ba5cf34b8de36377b90c5868

commit eb60d3426333b6b6ba5cf34b8de36377b90c5868 (HEAD -> master)
Author: dharmatech <dharmatech@xyz.com>
Date:   Thu May 6 10:34:03 2021 -0700

    abc

    bcd
    cde
    def

diff --git a/bcd b/bcd
new file mode 100644
index 0000000..a034a61
Binary files /dev/null and b/bcd differ

问题

我想提取提交消息正文(不带主题)。
下面的PowerShell代码可以实现这个功能:

$id = 'eb60d3426333b6b6ba5cf34b8de36377b90c5868'

$elts = git show $id | Select-Object -Skip 5

foreach ($elt in $elts)
{
    if ($elt -match '^diff --git a')
    {
        break
    }

    $elt
}

它输出:

bcd
cde
def

问题

有没有一种更直接的方式来执行上面的操作,可能是git工具内置的呢?
如果没有,有没有更好的方法来解析正文行?

e3bfsja2

e3bfsja21#

$ git log abcdef0 --format=%b
<BODY>

man 1 git-log开始:
--pretty[=<format>], --format=<format>以给定的格式精确打印提交日志的内容,其中<format>可以是onelineshortmediumfullfullerreferenceemailrawformat:<string>tformat:<string>之一。并且其中具有%placeholder,则它的作用就好像给定了--pretty=tformat:<format>
有关每种格式的更多详细信息,请参见"漂亮的格式"部分。如果省略=<format>部分,则默认为medium

euoag5mw

euoag5mw2#

下面是我最终使用的:

PS C:\temp\2021-05-06> git show --no-patch 'eb60d3426333b6b6ba5cf34b8de36377b90c5868' --format='%b'

bcd
cde
def

删除差异部分的关键是--no-patch

相关问题