mcpField
R
re0-git

re0-git

github.com/lilmgenius开发1.4k1.3k 次安装4 周前更新
代码仓库

关于 re0-git

re0-git 是一项重写已有提交说明的技能,让新会话无需查看差异也能从日志继续工作。它遵循仓库本地风格,只改说明,不改工作树内容。

主要功能

  1. 01重写已有提交说明
  2. 02参考附近日志的惯例
  3. 03保留持久有效的交接信息
  4. 04保持工作树内容不变
  5. 05签署重写提交并核对日期

适用场景

  1. 01精简冗长的 HEAD 提交说明
  2. 02整理尚未推送的短提交范围以便交接
  3. 03让提交日志无需差异内容也易于理解

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lilmgenius/paperthin --skill re0-git

安装后在 Claude Code 中输入/re0-git确认已加载。

详细介绍

用作者自己的口吻重写已完成的提交消息,让日志本身就能交接后续工作,而不是套用强加的风格。

目标

反复 amend 和顺势提交会让消息变得臃肿、过时或充斥琐事。re0-git 会将消息改写为简洁版本,让新会话无需查看 diff,仅凭 git log 就能继续工作。它只润色作者已有的写法。只有消息会改变;时间戳按下方的日期规则处理,工作树绝不改变。

这是由用户主动调用的工具——在你决定提交后再运行。若 Agent 随手就能使用提交清理工具,可能会让它倾向于在不该提交时提交。

工作流

  1. 确定目标范围——通常是 HEAD,有时是一个较短的未推送提交范围。
  2. 阅读改动(git show --stat、git diff)和任何有文档记录的提交规则。然后抽样查看附近的非目标提交消息:从 10 条开始,若风格约定已明显则提前停止,否则仅在需要弄清约定时扩大范围。
  3. 按以下顺序处理风格不一致的日志:项目文档中的规则、涉及同一区域的附近提交,然后是遵循该约定的同一作者的提交。不要折中兼容的风格,也不要让某位作者的习惯凌驾于仓库规范之上。
  4. 按提交精简原则(见下文)重写消息:只保留可长期作为交接依据的事实,将辅助改动并入其所服务的改动,并删掉 diff 或标签已能证明的内容。琐事不要单独列成条目。
  5. 使用签名重新提交,并按下方规则处理日期。对于最新提交(HEAD):git commit --amend -S --date=now——--date=now 会将作者日期更新为当前时间;单独使用 --amend 只会重置提交者日期,作者日期仍会过时。对于较旧的提交,若要保留其日期:重建该提交——GIT_AUTHOR_DATE/GIT_COMMITTER_DATE git commit-tree <tree> -p <parent> -S -m "<new message>"——然后将每个后代提交重放到重建后的提交上(重写非最新提交属于 rebase,而不是移动引用),否则就会使它们成为孤立提交。
  6. 验证并汇报。

规则

  • 绝不创建或建议创建提交——re0-git 只重写已有提交的消息。使用它绝不是提交的理由。
  • 只改消息——工作树必须保持字节级一致(git diff <old> <new> 为空);运行 re0-git 时绝不编辑内容。
  • 提交精简原则——本技能强制执行的提交消息标准:每项真实、持久的改动对应一个条目,并将辅助改动并入其中;不写 diff 或版本号已能证明的内容,不加共同作者标签,并与本地日志经抽样确认的风格一致。如果抽样后仍看不出稳定风格,则退回为主题行、空行,接着每项改动各用一个 - 条目,每条都写成不换行的单行——绝不写解释性段落,因为日志应该列出事实,而不是加以解释。对于文档中明确要求任何此类改动都必须执行的步骤(注册新技能、修改源文件后同步翻译文档),执行该流程只是证明流程已走完,并非此次改动的事实——将其作为末尾从句并入所服务的条目,若该条目已隐含此事则删除;只有当执行方式本身并非显而易见时,才值得单独列为条目。初稿也遵循相同标准;re0-git 只会对已经偏离标准的消息执行该原则。
  • 按位置处理日期;始终使用 GPG 签名。 正在完成的提交——HEAD——作者日期和提交者日期都设为当前时间,因为重新清理最新提交本身就是持续进行的工作。所有更早的提交(HEAD~1 及更早)都保留原有作者日期和提交者日期;绝不篡改过去的时间戳。
  • 未经明确确认,绝不重写已推送或共享的历史——这会导致必须强制推送。

验证

  1. git diff <old-tip> <new-tip> 为空——内容未改变。
  2. 每个重写后的提交都带有 GPG 签名(%G? = G),日期也符合预期。
  3. 隐藏 diff,仅重新阅读 git log——如果发现删掉的任何一行是理解改动所必需的,就将其恢复。

评论

支持 Markdown