Hacker News 中文摘要

RSS订阅

Show HN: Git-knife – 像编辑电子表格一样修改提交信息、作者和日期 -- Show HN: Git-knife – edit commit messages, authors, and dates like a spreadsheet

文章摘要

git-knife是一款桌面GUI工具,可直接编辑Git提交元数据,包括提交信息、作者、日期和邮箱。它通过调用系统Git命令重建提交,不改变文件内容,填补了现有Git GUI工具无法编辑提交日期的空白。

文章总结

好的,这是根据您的要求,对原文进行中文重述后的版本:

项目名称: git-knife

核心功能: 一款桌面图形界面工具,用于直接编辑 Git 提交的元数据,包括提交信息、作者、提交者及其日期。

解决的问题: 现有的图形化 Git 工具(如 GitKraken、Sublime Merge)虽然能很好地处理提交信息的修改和排序,但通常无法编辑提交的日期(尤其是提交者日期)和任意提交的作者身份。而能够修改这些元数据的命令行工具(如 git-filter-repo)又没有图形界面。git-knife 填补了这一空白。

工作原理: 该工具不重新实现 Git 功能,而是通过调用系统 Git 命令行,使用 git commit-tree 重建提交,并复用每个提交的原始文件树,从而保证文件内容不会被修改

功能对比: 与主流 Git 图形界面工具相比,git-knife 的独特优势在于: - 支持编辑作者日期提交者日期。 - 支持编辑作者/提交者的姓名和邮箱。 - 支持基于正则表达式的批量查找和替换功能。 - 提供清晰的图形界面。

当前状态(MVP): - 已完成: 打开仓库、列出提交、编辑各项元数据、批量查找替换、预览更改、自动备份与一键恢复、对已推送历史进行警告。 - 未完成: 提交排序/压缩/删除、合并提交的编辑、暂存区/分支/远程仓库管理。

使用方法: 1. 编辑提交: 打开仓库,点击非合并提交展开编辑器,修改信息后点击“Review & apply”应用。 2. 批量查找替换: 点击“Bulk find & replace”,选择目标字段,输入查找和替换内容,支持正则表达式。 3. 推送修改: 由于修改提交会改变其哈希值,导致本地与远程分支分歧,需要使用 git push --force-with-lease 命令强制推送,该命令比 --force 更安全。 4. 撤销修改: 应用内可通过“Backups”面板一键恢复,也可在命令行中使用备份引用 refs/knife-backup 进行恢复。

签名备注: 默认情况下,git-knife 会在每个重写的提交上添加一个透明的、可发现的备注,记录该提交被此工具编辑过。用户可以在应用中关闭此功能。

安全性: 每次应用修改前,工具都会创建一个指向旧提交顶端的备份引用 (refs/knife-backup/<branch>/<epoch>),确保可以随时恢复。

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 实用性与创新性(支持观点):

    • 评论1(YonathanTesfaye)介绍该工具功能:以表格形式展示提交记录,支持编辑作者、日期、消息,以及正则查找替换,且备份分支、不修改文件内容。
    • 评论9(jauntywundkring)认为该工具将git rebase -i与电子表格结合,是“serendipitous”(意外的惊喜),并引用相关讨论链接。
  2. 安全性与设计(支持观点):

    • 评论7(NichoPaolucci)赞赏工具“never reimplements git”(不重新实现git),而是通过系统git CLI和commit-tree重建提交,确保文件内容不变。
    • 评论10(unqueued)肯定工具使用git-notes和备份分支,但希望更轻量。
  3. 质疑与担忧(反对观点):

    • 评论4(mellosouls)认为工具“making easy something you normally should not do”(让本不该轻易做的事变得简单)。
    • 评论5(iamcoder18)质疑“has anyone ever needed to rewrite commit authors or dates?”(有人需要重写提交作者或日期吗?)。
    • 评论12(lrvick)指出工具无法处理多作者签名提交,且未签名历史存在供应链攻击风险。
  4. 改进建议

    • 评论8(hootz)希望有TUI表格编辑器版本。
    • 评论11(beart)因截图是屏幕照片而非截图,影响使用意愿。

平衡性总结: - 支持者强调工具的实用性和安全性设计(如备份、不修改文件内容)。 - 反对者关注其潜在风险(如破坏签名提交、鼓励不当操作)和实际需求有限。 - 改进建议聚焦于界面和功能扩展。