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

如何在Git的pretty-format字符串中消除换行符以保证单提交单行输出

如何在Git的pretty-format字符串中消除换行符以保证单提交单行输出

嘿,这个需求我太熟了!之前整理提交记录的时候经常要处理这种换行问题,其实有两种简单的思路,不用复杂的脚本就能搞定:

方法一:用Git内置的替换功能(Git 2.11+ 支持)

Git从2.11版本开始支持在pretty-format里直接做字符串替换,不用额外调用外部工具,非常方便。比如你想输出提交哈希、标题和正文,并且把正文里的所有换行换成空格,可以这么写:

git log --pretty=format:"%h %s %(replace:%b=\n= )"

解释一下:%(replace:%b=\n= )就是专门针对提交正文(%b)的替换规则,把所有换行符(\n)替换成空格。如果你的shell里\n需要转义,就改成\\n就行。要是想换成其他分隔符(比如|),直接把空格换成对应的符号就好。

方法二:用管道结合sed处理输出

如果你的Git版本比较旧,或者需要更灵活的替换(比如合并连续换行),可以用sed来处理git log的输出:

git log --pretty=format:"%h %s %b" | sed -E ':a;N;$!ba;s/\n+/ /g'

这个sed命令的作用是:先把所有行合并成一行,然后把所有连续的换行符替换成单个空格——完美解决空行变成多个空格的问题。

举个实际例子,假设某个提交的正文是:

Fix user profile display bug

  • Correct avatar size on mobile
  • Fix nickname truncation

用上面的方法处理后,就会变成单行输出:abc123 Fix user profile display bug - Correct avatar size on mobile - Fix nickname truncation,完全符合单提交单行的要求!

备注:内容来源于stack exchange,提问作者h0b0

火山引擎 最新活动