Git 协作与 AI:提交粒度、描述与回滚准备

kp-016核心15 分钟03-工程工作流

一句话定义

AI 时代的 Git 纪律三件事:一个 AI 会话对应一个逻辑提交、用模板让 AI 起草高信息量提交与 PR 描述、合并前永远保持「一步可回滚」的姿态。

为什么重要

AI 让变更产量翻倍,也让「说不清来源的改动」泛滥:一个巨型 PR 混着五个意图,出问题时既不能定位也不能回滚。Git 纪律是把 AI 生产力安全接入协作流程的接口层——提交粒度决定可回滚性,提交与 PR 描述决定可追溯性,回滚姿态决定事故时的止损速度。团队评审 AI 产出的信任成本,也主要由这三件事决定。

前置知识

kp-013(Diff 审查工作流——审查通过的内容才进入提交环节)。

核心概念

  • 提交粒度律:一个逻辑变更一个提交(一个行为/一次重构批),多个 AI 会话不要挤进一个提交;跨意图的改动用 git add -p 分拣。
  • 描述生成:让 AI 基于 diff 起草 commit message 与 PR 描述,人修订——AI 擅长把机械改动总结成可读文字,但动机必须人补。
  • 回滚准备:新分支工作、合并前不 push 到共享分支、每个提交可独立 revert;迁移批次(kp-015)每批一个提交是回滚的前提。
  • 分支与保护:AI 产物永远走特性分支 + PR + 评审,禁止绕过保护直接推主干。

提交描述模板(AI 起草用):

基于以下 diff 起草 commit message:
- 首行 ≤ 50 字:类型(范围): 摘要(feat/fix/refactor/test/chore)
- 正文 2-4 行:动机一句、改动要点、验证方式(测试名)
- 若涉及行为变更,单独一行用 BREAKING 标注

PR 描述模板:背景与动机 / 改动清单 / 验证方式与结果 / 风险与回滚方案 / AI 使用说明(哪些部分由 AI 生成、人审重点)。

原理与机制

提交粒度与回滚成本的关系是单向的:粒度越细,revert 的波及面越小、定位「哪一步引入问题」的二分越快。AI 会话与逻辑变更对齐的原因:一次会话内模型保持连贯意图,跨会话合并提交会让 diff 混入难以归因的改动。AI 起草描述有效的机制:它对 diff 内容有完整「记忆」,总结机械改动几乎零成本;但动机与权衡只在人脑中,所以正文首行(动机)必须人来写或人来改——这恰好也是评审者最需要的信息。

实例或案例

操作步骤(一个 AI 任务的收尾流程):

  1. 审查通过后,检查 git status:有无越界文件?有则还原(kp-013 的禁区检查)。
  2. git add -p 分拣:不属于本意图的改动(顺手格式化等)丢弃或另立提交。
  3. 用模板让 AI 起草 message,人补动机行,提交。
  4. 开 PR,用模板生成描述,重点写「AI 使用说明」与「回滚方案」。
  5. 评审通过后 squash 或保留原粒度合并(按团队约定),确保主干历史可二分。

排错清单:

  • AI 改了无关文件 → diff 审查漏了禁区检查;还原后把该路径写进规则文件禁区。
  • 描述空洞(「update code」)→ 模板缺动机行;要求「先一句话说为什么改,再说改了什么」。
  • 会话中途方案变更,diff 混了两版思路 → 拆提交或重做,不要合并提交掩盖摇摆。
  • 需要 revert 但发现多意图大提交 → 只能手工分离;把此教训回写团队规范。

公式或模型

本节不适用:粒度标准是可审性经验值(单提交 diff 建议百行内),无通用公式。

图示

本节不适用:三件事以清单表达已足够,图示无增量信息。

直观类比

提交像物流装箱:一箱一件、每箱有面单(message)、破损可整箱退(revert)。把五个意图塞一箱,退货时就得分拣到崩溃。

常见误区

  • AI 产物直接推主干:绕过评审的 AI 变更是团队事故的高发源。
  • 让 AI 全权写 PR 描述并直接采纳:动机与风险评估必须人写,AI 只总结事实。
  • 认为回滚是失败标志:细粒度提交 + 快速 revert 正是流程在正常工作的证据。

与其他知识点的关系

kp-015 依赖本节粒度律实现批次回滚;kp-018 的权限配置决定 AI 能否直接执行 git 写操作。

自测题

要点:一个逻辑变更一个提交、与会话对齐;理由是 revert 波及面小、二分定位快、diff 可归因。

要点:告知评审者生成来源与人审范围,让评审把注意力投向高风险区域,降低信任成本。

  1. 提交粒度律的内容与理由?
  2. PR 描述里为什么必须有「AI 使用说明」?

延伸阅读

《Pro Git》Scott Chacon & Ben Straub——分支模型与历史操作(revert/bisect)的权威手册。

#Git#提交粒度#PR描述#回滚