You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于[TEST]前缀提交信息批量修改Git提交的作者与提交者

修改前缀为[TEST]的Git提交记录的作者与提交者信息

要实现仅修改提交信息以[TEST]开头的Git提交的作者(author)和提交者(committer)信息,可以在git filter-branch的环境过滤器中加入提交信息的正则匹配逻辑,替换原有的邮箱筛选规则。

完整命令

git filter-branch --env-filter '
CORRECT_NAME="你的正确用户名"
CORRECT_EMAIL="你的正确邮箱@domain.tld"

# 获取当前提交的完整信息
COMMIT_MESSAGE=$(git log --format=%B -n 1 $GIT_COMMIT)

# 匹配以[TEST]开头的提交信息(正则支持通配)
if [[ "$COMMIT_MESSAGE" =~ ^\[TEST\] ]]; then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

关键逻辑说明

  • git log --format=%B -n 1 $GIT_COMMIT:获取当前处理的提交的完整提交信息(%B表示原始提交信息,-n 1只取第一行)
  • [[ "$COMMIT_MESSAGE" =~ ^\[TEST\] ]]:用bash的正则匹配判断提交信息是否以[TEST]开头(^表示行首,\[和\]是转义后的方括号,避免被正则解析为字符组)

注意事项

  • 执行命令前务必备份仓库:git filter-branch会重写整个提交历史,操作不可逆
  • 如果仓库已推送到远程,修改后需要强制推送:git push --force --all(注意会覆盖远程历史,需确保团队成员知晓)
  • 若提交信息包含多行,上述逻辑仅匹配第一行;如需匹配整个提交信息中的任意位置,可去掉^符号

内容的提问来源于stack exchange,提问作者A-d-r-i

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:52:14