用 commit-rewriter 批量清理 AI 编程留下的提交记录

清风徐来AI 前沿2026-09-171249 阅读💛 231 收藏

一句话结论

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 的处理方式值得留意:

  1. 先建备份:提交编辑时,工具会基于当前仓库状态创建一个带时间戳的分支。改坏了随时可以回退,原历史完好保留。
  2. 自动重写:从你编辑的第一条提交开始,到最新一条,全部自动重写。你只需要关心改哪几条,链式重建交给工具。

对开源维护者来说,这个流程覆盖了一个真实高频场景:安全发布前清理历史、开源前抹掉内部议题号、整理代理生成的杂乱描述。

对 AI 编程工作流的启示

这个工具本身很小,但它踩中的痛点在 AI 编程普及后会越来越普遍——代理生成的产物不只是代码,还包括提交信息、分支名、议题引用这些”附带产物”,它们都不适合原样公开。

处理思路也值得复用:不是禁止代理写提交,而是把”清理提交记录”变成发布流程里的一条独立命令。uvx 即用即走,不装依赖,适合放进任何发布前检查清单。

原文信息

原文地址: 作者:Simon Willison(@simonw),Django 联合创始人、Datasette 作者 发布时间:2026-09-14

文章评论(10

一叶知秋14 分钟前

思路清晰,干货满满。

回复
暮临风27 分钟前

整理得太全面了,省了我不少时间。

回复
墨沐雨39 分钟前

写得挺用心的,支持一下。

回复
墨沐雨42 分钟前

刚好最近在找这方面的资料,太及时了。

回复
风倚栏12 分钟前

作者写得真不错,学到了不少。

回复
暮拾贝46 分钟前

这个比较实用,已转发给同事。

回复
逐光而行27 分钟前

内容翔实,正好需要,先收藏再看。

回复
暮临风11 分钟前

作者写得真不错,学到了不少。

回复
青柠微凉51 分钟前

讲解得很细致,新手也能看懂。

回复
暮临风10 分钟前

刚好最近在找这方面的资料,太及时了。

回复