如何在Git变基100个提交时自动执行脚本并修改提交信息?
自动化批量修改Git提交:执行脚本并追加原提交SHA
核心方案:使用git rebase --exec批量处理提交
你可以通过自定义脚本结合git rebase的--exec参数,自动对每个提交执行指定操作,无需手动逐个处理:
创建并准备自定义处理脚本
在仓库根目录创建process-commit.sh脚本,内容如下:#!/bin/bash # 运行edit.sh修改目标文件 ./edit.sh # 暂存修改后的文件(替换为你的问题文件路径) git add path/to/your/problem-file.ext # 获取当前提交(即原提交)的SHA ORIG_SHA=$(git rev-parse HEAD) # 追加原SHA到提交信息末尾,保留原有提交内容 git commit --amend --no-edit -m "Original commit SHA: $ORIG_SHA"给脚本添加执行权限:
chmod +x process-commit.sh创建临时分支并执行批量变基
先切换到分支B,创建临时分支用于处理:git checkout B git checkout -b temp-processed执行变基,对分支A之后的所有提交(即你提到的100个提交)批量运行处理脚本:
git rebase --exec "./process-commit.sh" A这个命令会自动遍历A之后的每个提交,依次执行:
- 检出该提交
- 运行
edit.sh修改文件 - 暂存修改并追加原提交SHA到提交信息
- 继续处理下一个提交
验证结果
处理完成后,你可以通过git log查看每个提交的信息,确认原SHA已追加,且目标文件已被脚本修改:git log --oneline temp-processed
后续冲突处理
完成上述步骤后,你就可以基于temp-processed分支执行与上游的变基操作:
git rebase --onto upstream/main A temp-processed
由于目标文件已提前与上游修改对齐,冲突概率会大幅降低,此时再通过交互式变基处理剩余冲突即可。
内容的提问来源于stack exchange,提问作者Justin Grant
相关产品推荐
相关产品推荐

