一个提交只表达一个意图
把修复登录校验和调整页面间距放进同一个提交,会让审查、回滚和定位问题都变得困难。提交前先看差异:
git status --short
git diff --check
git diff --stat
提交信息写结果
推荐使用动词开头,说明结果和范围:
fix(auth): reject expired session cookies
docs(deploy): add HTTPS renewal check
正文只在需要解释为什么时补充。实现细节通常已经在 diff 里,动机则不会。
提交前的三个问题
- 这个提交能否用一句话说清楚?
- 删除它,是否只会撤销一个行为?
- 别人能否从提交信息判断应该先看哪里?