返回知识库

版本协作 · 版本协作

提交Commit

把一组相关修改保存为带说明的历史快照,便于回看、协作和回退。

先认出这枚提交票据,再判断能不能独立回退

下面就是 git log 里那一张票。默认是单意图、可独立 revert;空说明不会生成对象;把格式化捆进去,revert 会牵连无关改动。

第 0 步先打开:终端跑 git log --oneline,或点 GitHub 提交页。下面就是那枚票据。

9d2e8a4parent 8d1a2c0可独立 revert
修复登录失败后清空密码
  • src/auth/login.ts
  • tests/auth/login.spec.ts
  • docs/auth/login.md

单意图快照

3 个文件都在讲登录失败清空密码。日后 revert 这枚,不会牵连格式化。

原因:一次提交一个意图,才能独立回退。下一步:看空说明会失败,或看杂烩怎样牵连。

知识点:快照不是袋子

票面上的 hash、parent 和文件清单已经演过。

  • 一次提交一个意图,才能独立 git revert
  • 说明用动词开头,脱离聊天也能看懂这次改变了什么。
  • 提交是带 hash/parent 的快照,不是一袋 diff。
  • staging 决定 scope:只 add 属于这次意图的文件,秘密绝不进历史。

什么时候用、怎么用

能用一句话说清这一组改动,就该提交。

  • 信号:一个 bug、一个小功能或一段文档已经可独立理解。
  • 最短路径:status → 只 add 相关文件 → diff --staged → commit -m 动词开头说明。
  • 不适用:功能 + 格式化 + 依赖一把梭;密钥和构建产物用 gitignore。

正反例:同一个登录修复,只改暂存范围

目标相同,staging 不同。

正例只暂存登录修复 3 个文件

说明写成「修复登录失败后清空密码」。日后 revert 不牵连无关改动。

反例一句「更新」打包 6 个文件

revert 会同时回滚格式化和依赖;若再塞进 .env.local,还要清洗历史并轮换密钥。

快速自测

刚改完登录 bug,又顺手对整个 src/ 跑了 prettier,应该怎么提交?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。