interpret-trailers 是什么
trailer 是提交信息末尾的「键: 值」页脚,如 Signed-off-by、Reviewed-by。git interpret-trailers 用来解析与增删这类段落:--parse 输出结构化结果,--trailer 追加字段,支持 --in-place 直接改文件。它在钩子里很常用:按分支规则自动补关联单号或签章,避免人工每次手写。
基本信息
| 解析 | git interpret-trailers --parse < 提交信息文件 |
|---|---|
| 追加 | git interpret-trailers --trailer 'Closes: #123' |
| 就地修改 | --in-place 直接改写文件,如 .git/COMMIT_EDITMSG |
| 策略选项 | --if-missing 与 --if-exists 控制已有字段时的取舍 |
| 自定义 | trailer.<键>.* 配置追加策略;--where 控制插入位置 |
| 格式 | 分隔符默认冒号,键与值之间一个空格;多行同键解析时都会保留 |
典型使用场景
- 提交钩子:commit-msg 钩子里按分支规则自动追加单号
- 批量补签:给导入的历史补 Ref 或 Reviewed-by 字段
- 解析统计:--parse 输出给脚本读,汇总关联的工单
- 规范对齐:统一团队 trailer 词典,避免同义键混用
- 迁移清洗:把旧系统的单号批量搬进新仓库的提交页脚
常用示例
常用示例
git log -1 --format='%B' | git interpret-trailers --parse # 解析最近提交的页脚
git interpret-trailers --in-place --trailer 'Refs: PROJ-231' .git/COMMIT_EDITMSG # 追加字段
git interpret-trailers --where end --trailer 'Closes: #88' msg.txt # 指定插入到末尾块
printf 'subject\n\n' | git interpret-trailers --trailer 'Signed-off-by: Z <z@x.com>' # 管道验证常见 trailer 字段
| 字段 | 含义 | 来源 |
|---|---|---|
| Signed-off-by | 贡献权声明(DCO) | git commit -s 或钩子 |
| Co-authored-by | 结对署名 | 手工或工具添加 |
| Reviewed-by | 评审确认 | 评审流程记录 |
| Acked-by | 确认接受变更 | 维护者记录 |
| Refs 与 Closes | 关联工单或议题 | 钩子按分支规则追加 |
解析输出为「键: 值」列表;与多个工具约定的 trailer 词典保持一致,避免同义键并存导致统计口径混乱。钩子里用 --if-missing 可以做到补签不重复。
trailer 与正文的边界按最后一段连续键值行判断,正文里出现同格式的字符串可能被误解析,重要内容不要写成孤立的键值行。