Git提交消息批量替换Jira项目键,忽略分支名及TEST-SCD格式
解决方案
正则表达式与git filter-repo命令
直接用以下PowerShell命令完成精准替换,完全贴合你的匹配规则与排除要求:
# 先备份仓库(必做!避免历史丢失) Copy-Item -Path ./your-repo -Destination ./your-repo-backup -Recurse # 执行批量提交消息替换 git filter-repo --replace-message <(echo 's/\bTEST(?!-SCD)([-_=])(\d{1,5})\b/TESTPSW$1$2/g')
正则规则拆解
这条正则\bTEST(?!-SCD)([-_=])(\d{1,5})\b的设计逻辑:
\b:单词边界,确保只匹配独立的TEST前缀,不会误改包含TEST的长单词(比如TESTXYZ-123)(?!-SCD):负向预查,直接排除TEST-SCD开头的格式,满足你忽略TEST-SCD+数字的要求([-_=]):捕获分隔符,匹配-、_、=任意一种(\d{1,5}):捕获1-5位数字,严格限制数字长度- 替换部分
TESTPSW$1$2:保留原分隔符和数字,仅替换前缀TEST为TESTPSW
关键说明
- 不修改分支名:
--replace-message参数仅作用于提交消息字段,分支名不会被改动,自然满足你忽略分支中TEST-格式的要求 - 验证替换结果:执行命令后,用以下命令检查是否符合预期:
# 查看所有替换后的提交消息 git log --grep="TESTPSW[-_=]\d" # 确认没有误改TEST-SCD格式 git log --grep="TEST-SCD\d"
内容的提问来源于stack exchange,提问作者Riley M
相关产品推荐
相关产品推荐

