You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Git提交的Body内容合并为单行输出?

如何提取Git提交Body并将多行合并为单行

我来帮你搞定这个需求!要把每个Git提交的Body内容合并成单独一行输出,你可以用Git的格式化选项搭配文本处理工具来实现,这里有两个简单好用的方法:

方法1:使用sed命令

直接把git log的输出交给sed处理,自动合并每个提交的Body多行内容:

git log --format='%b' | sed '/^$/d; :a; N; /\n$/! s/\n/ /; ta'

命令解释:

  • git log --format='%b':只输出每个提交的Body部分,提交之间用空行分隔
  • sed '/^$/d':先删除所有空行,这些空行是提交之间的分隔符
  • :a; N; /\n$/! s/\n/ /; ta:这部分是sed的循环处理逻辑,把同一个提交的Body里的换行符替换成空格,直到处理完当前提交的所有行

方法2:使用awk命令

awk的段落处理能力更直观,适合这种按空行分隔的场景:

git log --format='%b' | awk 'BEGIN{RS=""; ORS="\n"} {gsub(/\n/, " "); print}'

命令解释:

  • BEGIN{RS=""; ORS="\n"}:在处理文本前,设置记录分隔符RS为空字符串(这样awk会把空行分隔的内容当作一个独立记录),输出记录分隔符ORS为换行(确保每个提交的内容占一行)
  • {gsub(/\n/, " "); print}:对每个记录(也就是单个提交的Body),把所有换行符替换成空格,然后打印出来

这两个方法都能帮你得到想要的效果:每个提交的Body内容合并成一行,每个提交单独占一行。

内容的提问来源于stack exchange,提问作者foka

火山引擎 最新活动