上下文
让我们假设我有以下提交:
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工具内置的呢?
如果没有,有没有更好的方法来解析正文行?
2条答案
按热度按时间e3bfsja21#
从
man 1 git-log
开始:--pretty[=<format>], --format=<format>
以给定的格式精确打印提交日志的内容,其中<format>
可以是oneline
,short
,medium
,full
,fuller
,reference
,email
,raw
,format:<string>
和tformat:<string>
之一。并且其中具有%placeholder
,则它的作用就好像给定了--pretty=tformat:<format>
。有关每种格式的更多详细信息,请参见"漂亮的格式"部分。如果省略
=<format>
部分,则默认为medium
。euoag5mw2#
下面是我最终使用的:
删除差异部分的关键是
--no-patch
。