修复LazyGit自定义命令自动添加Git提交前缀的空格问题
修复LazyGit自动添加工单编号到提交信息的空格兼容问题
问题根源
提交信息包含空格时未被正确包裹为单个参数,Shell会将空格拆分后的内容传递给git commit,Git误将这些内容识别为文件路径,从而触发pathspec错误。原awk命令未对含空格的提交信息做引号包裹处理,导致参数拆分异常。
修复方案
将提取的工单编号与提交信息整体用双引号包裹,确保Shell将其识别为单个参数。同时优化分支前缀提取逻辑,精准匹配工单编号格式:
方式1:适配TEST-12345格式的工单编号(分支名前缀为大写字母+连字符+数字)
git commit -m "$(git branch --show-current | grep -o '^[A-Z]*-[0-9]*') {{.Form.Message}}"
方式2:按分支名连字符分割提取前两段(适配固定结构分支名)
如果分支名严格遵循工单编号-分支描述格式(如TEST-12345-my-branch-name),可使用awk拆分:
git commit -m "$(git branch --show-current | awk -F'-' '{print $1 "-" $2}') {{.Form.Message}}"
核心改进点
- 用双引号包裹
-m参数的整个值,避免空格被Shell解析为参数分隔符 - 确保工单编号与提交信息之间的空格属于提交信息的一部分,而非参数拆分标记
内容的提问来源于stack exchange,提问作者programandoconro
相关产品推荐
相关产品推荐

