Show HN:Git-knife – 像编辑表格一样编辑 commit 消息、作者和日期
一个新的基于 Tauri 的工具 git-knife 允许用户在类似电子表格的表格中编辑 Git commit 元数据——消息、作者和日期——并支持正则查找替换和自动分支备份,以避免改动文件内容。评论者争论把历史重写变得如此容易是否会助长不良实践,但许多人提到了一些正当用途,例如修正错误配置的作者邮箱、重建历史时间线,或在共享前整理正在进行中的分支。这个项目也引发了更广泛的思考:Git 的复杂性、对更友好的历史编辑工具的真实但小众的需求,以及 LLM 在快速构建此类工具中日益重要的角色。
概览与核心功能
- 桌面应用(Tauri),以表格形式显示 commits,并允许用户像编辑电子表格一样修改消息、作者和日期。
- 支持用于批量修正的正则查找与替换。
- 会备份分支并使用 git-notes;通过
git commit-tree重新构建 commits,同时复用 tree 对象,因此文件内容永远不会改变。 - 后续版本会对已签名的 commits 发出警告,并可用用户自己的密钥重新签名被重写的 commits。
截图与 UX 反馈
- 几位评论者希望 README 中更醒目地放置截图,以免盲目克隆。
- 最初的截图托管(Imgur)在移动端有问题;后来改为 GitHub 托管的图片。
- 有人认为截图看起来像一张显示器照片;也有人指出那是一个透明的 GNOME/Zorin 窗口,元数据也证实这是一张真实截图。
- 还有人要求提供 TUI 版本,以及用于类似 rebase 操作的拖放式 UI,包括重新排序 commits 以及编辑哪些文件属于哪个 commit。
编辑元数据的使用场景
- 修正许多 commits 中错误的作者邮箱或身份。
- 在推送前整理历史,包括为贡献者更正署名。
- 重建历史时间线(例如抓取时间线、法律、档案来源),这时 commit 日期需要反映现实世界中的变更时间。
- 在拆分仓库时,仍为文件子集保留准确的作者/日期元数据。
- 个人“美化”用途,比如隐藏拖延,或调整看起来的工作时长。
担忧与局限
- 有人认为这会让危险的历史重写变得过于容易;也有人把它类比为一把有用但锋利的“刀”,适合本地清理或归档工作。
- 需要注意,多作者的已签名历史实际上是不可变的;未签名历史则被视为潜在的供应链风险。该工具被定位为最适合单作者或 WIP 分支使用。
与现有 Git 工作流和工具的关系
- 与
git rebase -i进行了比较与对照,有些人本来就把它看作一种类似表格的 commit 编辑器。 - 还提到了
git-filter-repo和git-revise等替代工具,它们适用于更高级或不同的重写工作流。
元话题:LLMs 与工具
- 还展开讨论了 LLM 在产出小工具和文档方面的作用。
- 一些人赞赏 LLM 让小众工具和一次性脚本成为可能;另一些人则不喜欢文档中的“LLM 口吻”以及代码里噪音式的 AI 生成注释。