用 commit-rewriter 批量清理 AI 编程留下的提交记录
一句话结论
commit-rewriter 是一个清理 AI 编程代理污染提交记录的 Python 小工具:一条 uvx 命令启动网页编辑器批量改写提交信息,自动建时间戳备份分支可随时回退,解决开源发布前提交历史 unfit 公开的问题。
用 Claude Code、Codex 这类编码代理写代码的开发者,几乎都遇到过同一个尴尬:仓库的初始提交(commit message)里塞满了代理自动生成的冗余描述和私有仓库的议题编号。这些信息对内部开发无所谓,可一旦项目要开源发布,直接公开就不合适了。
Simon Willison 在为 Datasette 处理安全版本发布时,正面撞上了这个问题。安全公告需要公开对应的代码变更历史,但那些提交记录是为私有仓库生成的,” unfit 发布”—— unfit 直接发布。
commit-rewriter 是什么
他的解法是写了一个小工具:commit-rewriter,一个 Python 网页应用,专门用来批量编辑仓库的提交信息。
使用方式只有一行命令:
uvx commit-rewriter path/to/repo
如果已经 cd 到目标仓库目录,路径都可以省略:
uvx commit-rewriter
工具启动后会在本地打开一个网页编辑器,列出仓库全部提交,让你逐条修改提交信息。
两个关键设计:时间戳备份分支与全量改写
提交信息在 Git 里不是独立文件,改一条就要重写整条历史链。commit-rewriter 的处理方式值得留意:
- 先建备份:提交编辑时,工具会基于当前仓库状态创建一个带时间戳的分支。改坏了随时可以回退,原历史完好保留。
- 自动重写:从你编辑的第一条提交开始,到最新一条,全部自动重写。你只需要关心改哪几条,链式重建交给工具。
对开源维护者来说,这个流程覆盖了一个真实高频场景:安全发布前清理历史、开源前抹掉内部议题号、整理代理生成的杂乱描述。
对 AI 编程工作流的启示
这个工具本身很小,但它踩中的痛点在 AI 编程普及后会越来越普遍——代理生成的产物不只是代码,还包括提交信息、分支名、议题引用这些”附带产物”,它们都不适合原样公开。
处理思路也值得复用:不是禁止代理写提交,而是把”清理提交记录”变成发布流程里的一条独立命令。uvx 即用即走,不装依赖,适合放进任何发布前检查清单。
原文信息
原文地址: 作者:Simon Willison(@simonw),Django 联合创始人、Datasette 作者 发布时间:2026-09-14
实话,说的不明不白
楼主辛苦了,内容很有参考价值。
看标题就点进来了,内容果然没让人失望。