You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中处理git status --porcelain输出实现邮件HTML换行?

解决Git状态输出在邮件中单行显示的问题

修改思路

  1. 避免重复执行git status --porcelain,一次性获取并过滤需要的状态条目
  2. 给每个条目添加HTML换行标签<br />,确保邮件中每个文件单独一行
  3. 调整邮件内容格式,适配HTML显示(需确保邮件发送函数支持HTML格式)

修改后的代码

$output = ""
# 一次性获取并过滤需要的Git状态条目(M=修改,D=删除,??=未跟踪)
$gitStatus = git status --porcelain | Where { $_ -match '^M |^D |^\?\?' }

if ($gitStatus) {
    # 拼接文件夹名称,使用HTML换行
    $output += "${Folder}:<br />"
    # 给每个状态条目添加<br />,并拼接成字符串
    $output += $gitStatus -join "<br />"
    $output += "<br />"
}

if (-not [string]::IsNullOrEmpty($output)) {
    # 若Send-Email支持HTML参数,需指定BodyAsHtml为$true
    Send-Email -Body $output -BodyAsHtml $true
}

关键修改说明

  • 单次获取Git状态:将git status --porcelain的结果提前保存到$gitStatus变量,避免两次执行导致的状态不一致问题
  • 精确过滤条目:使用正则^M |^D |^\?\?精准匹配开头为修改、删除、未跟踪的状态行,避免误匹配文件名中包含M/D的情况
  • 添加HTML换行:通过-join "<br />"将每个状态条目用<br />连接,确保邮件中每个文件单独一行显示
  • HTML邮件支持:发送邮件时需确保Send-Email函数允许设置BodyAsHtml为$true,否则<br />会被当作纯文本显示

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:17:17