如何通过Bash脚本为Git分支所有历史提交信息追加工单编号TIX-321
注意事项
该操作会重写整个分支的Git提交历史,执行前请务必对当前仓库进行完整备份,避免提交记录丢失。如果该分支有其他协作者,操作完成后需要通知所有协作者强制拉取最新分支历史,否则会出现历史分叉冲突。
自动执行脚本
#!/bin/bash # 配置参数 TARGET_BRANCH="test_branch" TICKET_ID="TIX-321" # 切换到目标分支,失败则退出 git checkout "${TARGET_BRANCH}" || { echo "切换分支${TARGET_BRANCH}失败,请检查分支是否存在"; exit 1; } # 遍历所有提交追加工单编号,已存在编号则跳过 git filter-branch -f --msg-filter " msg=\$(cat) if ! grep -q \"${TICKET_ID}\" <<< \"\$msg\"; then echo \"\$msg\" echo \"工单编号:${TICKET_ID}\" else echo \"\$msg\" fi " HEAD # 强制推送修改后的历史到远程仓库 git push origin "${TARGET_BRANCH}" --force-with-lease
脚本说明
- 全程无人工交互,不需要使用交互式变基操作,自动遍历该分支的所有提交修改提交信息
- 内置重复判断逻辑,不会给已经包含工单编号的提交重复追加内容
- 使用
--force-with-lease参数执行强制推送,会先校验远程分支没有你本地未同步的新增提交,避免误覆盖其他人的新提交 - 如果你的环境已经安装
git filter-repo,可以替换git filter-branch相关逻辑,执行效率更高,适合提交数较多的大型仓库
内容的提问来源于stack exchange,提问作者uniXVanXcel
相关产品推荐
相关产品推荐

