Git交互式变基:无需逐个确认即可重写提交信息
批量重写Git提交信息无需逐个确认的方法
要实现批量修改提交信息且不用逐个打开编辑器确认,可通过修改交互式变基的todo列表,结合exec命令完成:
执行交互式变基命令:
git rebase --interactive HEAD~200在vim的todo缓冲区中,把每一行的提交指令改成
pick+ 对应exec修改命令的组合:
原行示例:pick 0c511d9 foo修改后:
pick 0c511d9 foo exec git commit --amend -m "foo_changed"批量调整后整个todo列表类似:
pick 0c511d9 foo exec git commit --amend -m "foo_changed" pick da36f6f bar exec git commit --amend -m "bar_changed_too" ...保存退出vim(
:wq),Git会自动执行所有exec命令,直接把对应提交的信息改成你指定的内容,全程不会弹出新编辑器窗口。
如果手动修改太繁琐,可在vim里用批量替换命令快速处理:
- 输入
:%s/pick \(.*\) \(.*\)/pick \1 \2\nexec git commit --amend -m "\2_changed"/g,按回车执行(可根据实际需求调整替换规则里的新信息格式) - 之后再手动微调个别提交的新信息即可。
注意:这种操作会修改提交哈希值,若已将这些提交推送到远程仓库,需谨慎使用git push --force,并提前告知团队成员同步操作。
内容的提问来源于stack exchange,提问作者ChrisB
相关产品推荐
相关产品推荐

