用 uvx commit-rewriter 0.1 批量改 Git 提交说明,比手动 rebase 快
想快速清理 Git 提交记录的话,直接用 uvx commit-rewriter path/to/repo 就能起一个 Web 界面,在网页里像改文档一样把那些乱七八糟的 commit message 改掉,最后点一下 Rewrite 按钮,它会自动帮你把从第一个修改项到最新的所有提交记录全部重写。
为什么需要这个工具
很多项目在开发阶段会用 AI Agent 辅助,或者在私有仓库里引用大量的 Issue ID。这类提交信息直接同步到公开仓库非常不专业,充满了各种 "cruft"(冗余碎片)。传统的 git rebase -i 虽然能改,但如果面对几十个 commit,一个个跳出来编辑真的让人崩溃。commit-rewriter 0.1 这种 Web 界面化操作,能让你一眼看到所有提交,批量修改完再统一提交,效率高得离谱。
实际操作流程
如果你安装了 uv,运行起来非常简单。
一、启动工具
直接在终端执行以下命令。如果你已经在项目目录下,不需要加路径:
uvx commit-rewriter path/to/repo
二、界面操作
启动后会打开一个 Web 页面。左侧边栏列出了最近的提交记录及其短哈希,右侧则是编辑区。你可以通过搜索框快速定位某个作者、哈希或关键词。
三、执行重写
在编辑区域直接修改 commit message。修改后,工具栏会显示 "pending edits"(待处理编辑数)。确认无误后点击 "Rewrite commit messages" 按钮。
关于数据安全和回滚
我对这类重写历史的工具一直比较谨慎,因为 git push -f 之前如果搞错了很麻烦。commit-rewriter 0.1 在提交修改时有一个机制:它会先为当前的仓库状态创建一个带时间戳的备份分支。这意味着如果你发现重写后的历史不对,或者误删了什么,可以通过这个备份分支快速回滚,不需要去翻找 git reflog。
总结与避坑
这个工具的核心逻辑就是把一个繁琐的命令行交互过程变成了可见的 Web 表单。唯一要注意的是,它执行的是重写操作,所以如果你已经把分支推送到远程且有其他人协作,记得提前告知团队,因为这会改变 commit hash,所有人都得重新 pull。
这玩意儿要是能直接把那种“fix 1”这种垃圾提交批量正则替换就神了,我库里起码有 50 个这种记录。