git-am应用补丁的顺序规则及自定义排序方式咨询
让git-am按邮件Subject排序应用补丁的方法
git-am本身没有直接支持按Subject排序的内置参数,但可以通过预处理邮件文件,先按Subject排序再传给git-am来实现,具体步骤如下:
1. 生成按Subject排序的补丁文件列表
借助formail工具(多数Linux发行版可通过mailutils包安装)提取每个邮件的Subject,关联文件名后排序,生成有序的文件列表:
cd /tmp/mypatches # 提取Subject并关联文件名,排序后仅保留文件名 formail -s sh -c 'echo "$(formail -xSubject: < "$1") $1"' * | sort | cut -d' ' -f2- > sorted_patches.txt
这段命令的细节:
formail -s将每个邮件文件作为独立输入传递给后续shell脚本- 内层
formail -xSubject:精准提取邮件的Subject行内容,能正确处理多行折叠的Subject - 拼接Subject与文件名后排序,再剔除Subject部分,只保留排序后的文件名到
sorted_patches.txt
2. 用git-am应用排序后的补丁
通过排序后的文件列表调用git-am,确保补丁按Subject顺序应用:
# 基础用法(文件名无特殊字符时适用) git-am $(cat sorted_patches.txt) # 更安全的用法(兼容含空格、特殊字符的文件名) xargs -d '\n' git-am < sorted_patches.txt
额外提示
如果邮件Subject包含补丁序列前缀(比如[PATCH 1/5]这类标识),默认的字典排序会自动按数字顺序处理,刚好匹配补丁的预期应用顺序。若没有formail,也可以用grep+sed组合提取Subject,但formail处理邮件格式的兼容性更强。
内容的提问来源于stack exchange,提问作者Philippe
相关产品推荐
相关产品推荐

