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

如何编写Bash脚本为连续Git提交信息统一添加前缀?

批量修改Git提交信息前缀的Bash脚本方案

如果你需要批量给连续范围内的Git提交信息统一添加前缀,不用逐个手动确认,下面是两种高效的实现脚本,以及关键注意事项:

方案一:使用git filter-branch(快速修改历史)

这种方式语法简洁,适合快速处理指定范围的提交信息:

完整脚本

#!/bin/bash

# 检查参数数量
if [ $# -ne 3 ]; then
    echo "用法: $0 <起始SHA> <结束SHA> <前缀>"
    exit 1
fi

SHA_START=$1
SHA_END=$2
PREFIX=$3

# 验证传入的SHA是否有效
if ! git rev-parse --verify "$SHA_START" >/dev/null 2>&1; then
    echo "错误: 起始SHA $SHA_START 无效"
    exit 1
fi

if ! git rev-parse --verify "$SHA_END" >/dev/null 2>&1; then
    echo "错误: 结束SHA $SHA_END 无效"
    exit 1
fi

# 检查提交范围是否连续(可选提示)
if ! git log --oneline "$SHA_START^..$SHA_END" | grep -q "$SHA_START"; then
    echo "警告: $SHA_START 似乎不是 $SHA_END 的祖先,可能不是连续提交范围"
fi

# 核心操作:给指定范围的提交信息添加前缀
echo "正在修改提交信息,添加前缀: $PREFIX"
git filter-branch --msg-filter "sed 's/^/$PREFIX/'" "$SHA_START^..$SHA_END"

echo "修改完成!"
echo "注意:此操作重写了提交历史,若分支已推送到远程,需执行 git push --force-with-lease"

使用步骤

  1. 保存脚本为rename-git-messages.sh,添加执行权限:chmod +x rename-git-messages.sh
  2. 执行命令:bash rename-git-messages.sh <sha_start> <sha_end> "my-prefix-"

方案二:使用git rebase(Git推荐工作流)

git filter-branch已被官方标记为过时,推荐用git rebase --exec实现更安全的历史修改:

完整脚本

#!/bin/bash

# 检查参数数量
if [ $# -ne 3 ]; then
    echo "用法: $0 <起始SHA> <结束SHA> <前缀>"
    exit 1
fi

SHA_START=$1
SHA_END=$2
PREFIX=$3

# 获取起始提交的父提交,作为变基起点
PARENT_SHA=$(git rev-parse "$SHA_START^")

# 验证父提交是否存在
if ! git rev-parse --verify "$PARENT_SHA" >/dev/null 2>&1; then
    echo "错误: 起始SHA $SHA_START 没有父提交(可能是初始提交)"
    exit 1
fi

# 批量修改提交信息
echo "正在执行变基并修改提交信息..."
git rebase "$PARENT_SHA" "$SHA_END" --exec "git commit --amend -m \"$PREFIX\$(git log --format=%B -n1 HEAD)\" --no-edit"

echo "修改完成!"
echo "注意:若分支已推送到远程,需执行 git push --force-with-lease"

方案优势

  • 遵循Git官方推荐的历史修改流程,风险更低
  • 自动维护提交顺序,不会生成冗余的备份分支

关键注意事项

  • 禁止在公共分支执行:两种方案都会重写提交历史,会导致其他协作者的本地分支与远程分支冲突
  • 先做备份:执行前建议创建备份分支,比如git branch backup-pre-rename,以防需要回滚
  • 合并提交处理:如果提交范围包含合并提交,方案一需添加--preserve-merges参数,方案二需添加--rebase-merges参数

内容的提问来源于stack exchange,提问作者mcExchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:42:55