Git 操作安全
Git 是 Claude Code 任务交付的最后一道门。不要让 CC 在没有确认的情况下重置、提交、推送或清理改动。
默认禁止
Git 操作是最后一道门。CC 可以帮你检查 Git 状态、总结 diff、生成提交信息,但默认不应该替你提交、推送或丢弃改动。
- 不要自动
commit。 - 不要自动
push。 - 不要
reset --hard、clean -fd、强推或变基。 - 不要丢弃用户未提交的改动。
- 不要改写历史。
- 不要把多个无关任务混进一个提交。
Git 安全的核心原则:CC 可以帮忙“判断”,但关键动作要先确认。尤其是会丢内容、改历史、影响远程仓库的操作,不能自动执行。
| 动作 | 默认策略 |
|---|---|
| 查看状态、查看 diff | 可以让 CC 做 |
| 生成提交信息 | 可以让 CC 做 |
| 暂存文件 | 需要明确文件清单 |
| 提交 | 建议人工确认后执行 |
| 推送 | 必须确认远程和分支 |
| reset、clean、force push | 默认禁止 |
提交前检查模板
请做提交前检查,但不要提交 Git。 要求: 1. 检查当前 Git 状态。 2. 列出本次修改文件。 3. 判断是否有无关文件变化。 4. 检查是否包含密钥、Token、隐私信息。 5. 回顾任务验收是否完成。 6. 如果适合提交,生成一条不夸大的提交说明。
先确认工作区是不是干净
如果开始任务前工作区已经有改动,要先问清楚:
请先只读检查当前 Git 工作区,不要修改文件。 请判断: 1. 工作区是否已经有未提交改动。 2. 这些改动看起来是否和当前任务相关。 3. 哪些文件需要我人工确认。 4. 在确认前是否应该暂停新任务。
不要在不清楚旧改动来源时继续开发。否则最后很难分清哪些是本次任务,哪些是之前留下的。
先让 CC 看状态
请只读检查 Git 状态,不要修改文件,不要提交。 请输出: 1. 当前有哪些已修改文件。 2. 哪些文件和本次任务相关。 3. 哪些文件需要我人工确认。 4. 是否有新增文件、删除文件、重命名文件。 5. 是否有敏感信息风险。 6. 是否建议先运行 /verify 或 /code-review。
看到危险 Git 操作时
不要执行这个 Git 操作。 请先解释: 1. 这个操作会影响哪些文件或提交。 2. 是否会丢失未提交内容。 3. 有没有只读检查方式。 4. 有没有更低风险的替代方案。 等确认后再继续。
常见危险操作
git reset --hard:丢弃未提交改动。git clean -fd:删除未跟踪文件。git checkout -- .:覆盖工作区文件。git push --force:改写远程历史。git rebase:可能改写提交链。git commit -a:可能把没确认的文件一起提交。
看到危险操作时,不要只看命令短不短,要看后果:
| 命令类型 | 风险 |
|---|---|
| reset / checkout 覆盖 | 未提交内容可能丢失 |
| clean 删除 | 未跟踪文件可能被删除 |
| force push | 远程历史可能被改写 |
| rebase | 提交顺序和哈希会变化 |
| commit -a | 没确认的文件可能一起进提交 |
拆提交怎么判断
一个提交最好只做一件事。
- 文档修改和代码修改可以拆。
- Bug 修复和重构可以拆。
- 数据库迁移和接口改动可能需要关联,但要说明顺序。
- 大量格式化不要和业务改动混在一起。
请判断本次改动是否应该拆提交。 请按文件分组: 1. 同一任务必须一起提交的文件。 2. 可以拆成独立提交的文件。 3. 不应该提交的文件。 4. 需要人工确认的文件。 不要执行 git add、commit 或 push。
暂存前也要确认
暂存不是提交,但也会影响后续提交范围。可以这样让 CC 给文件清单:
请建议本次应该暂存哪些文件,但不要执行 git add。 请输出: 1. 建议暂存文件。 2. 每个文件为什么属于本次任务。 3. 不建议暂存文件。 4. 需要人工确认的文件。
提交信息不要夸大
请根据当前 diff 生成提交信息。 要求: 1. 只描述实际改动。 2. 不要写“全面优化”“彻底修复”。 3. 如果只是文档或样式,要明确。 4. 给出 3 个候选。 5. 不要执行提交。
真要提交前
即使让 CC 生成提交说明,也建议人工执行提交。至少要先看清楚 git status 和 diff。
请做最后提交前确认。 请输出: 1. 是否建议提交。 2. 推荐提交文件清单。 3. 不应提交文件清单。 4. 已完成验收。 5. 剩余风险。 6. 推荐提交信息。
推送前再问一次
推送会影响远程仓库。推送前让 CC 只做确认:
请做推送前确认,不要执行 push。 请检查: 1. 当前分支是什么。 2. 远程仓库和目标分支是什么。 3. 本地是否领先远程。 4. 是否有未提交改动。 5. 是否确认本次提交内容和提交信息准确。 6. 是否存在不应该推送的风险。
验收结果
- 你知道哪些 Git 操作默认禁止。
- 你会让 CC 做提交前检查但不提交。
- 你知道危险 Git 操作必须先解释风险。
- 你知道提交前要确认文件清单和提交信息。