Docs Library
暂存与 commit
理解工作区、暂存区和提交历史三层模型,并把文件修改稳定地变成清晰、可复用的本地提交。
- 刚开始系统学 Git 的新手
- 想补齐最小协作闭环的人
- 会打开终端并进入仓库目录
- 知道本地和远端仓库的基本区别
- 跳过顺序直接学高风险命令
- 把示例命令直接用到当前工作仓库
这一步最重要的心智模型
Git 初学阶段最值得建立的模型,就是三层:
- 工作区:你正在编辑的文件
- 暂存区:你准备放进下一次提交的内容
- 提交历史:已经保存下来的快照
如果这三层一直混着看,很多基础命令都会显得模糊。
这一页的目标不是让你背出更多参数,而是让你形成一个稳定动作:
修改文件 -> 检查状态 -> 选择暂存 -> 创建提交 -> 回头验证历史
工作区改动暂存区快照历史提交
选中的改动新的提交更清晰的历史
如果你不确定自己现在改的是哪一层,先停下来跑一次 git status。
第一步:先修改一个小文件
建议从最简单的练习开始,比如改 README 或文档文件。
改完以后先看:
git status
这时候你看到的是工作区里的变化,还不是即将提交的内容。
如果你想更明确一点,可以顺手看:
git diff
这条命令看到的是“工作区相对暂存区”的变化。
第二步:把改动加入暂存区
git add .
git status
这里最重要的不是写 .,而是理解:
add不是提交add是在选择下一次提交要包含什么- 你可以一次只暂存一部分内容
为了看清这一点,推荐再跑一次:
git status
git diff --cached
这样你能同时看到:
- 工作区里还有什么没进暂存区
- 暂存区里到底准备提交什么
第三步:生成提交
git commit -m "docs: update quick start notes"
这一步会把“暂存区里的快照”保存成一个新的提交。
推荐你提交后马上看:
git log --oneline --decorate -5
git show --stat --oneline HEAD
这一步很关键,因为很多初学者提交完就走了,不会回头确认自己刚刚到底提交了什么。
一个最值得反复练的微型闭环
# 修改文件
git status
git add .
git diff --cached
git status
git commit -m "docs: refine guide"
git log --oneline --decorate -3
如果这条小闭环已经顺了,后面同步远端会轻松很多。
一个更真实的小场景
假设你刚 clone 完仓库,现在要修正一个 README 标题:
- 打开
README.md改一行标题 - 跑
git status确认只有这个文件变了 - 跑
git add README.md - 跑
git diff --cached检查暂存内容 - 跑
git commit -m "docs: fix README title" - 跑
git log --oneline -3确认新提交已经出现
这个练习的价值在于:你会体验到“提交不是一个按钮,而是一组有边界的动作”。
提交信息怎么写更稳
初学阶段先做到两件事就够了:
- 一次提交表达一个明确意图
- 提交信息让未来的自己也看得懂
比如:
git commit -m "feat: add login form validation"
git commit -m "docs: clarify clone workflow"
git commit -m "fix: handle empty remote response"
如果你还拿不准,就先遵守这个最小规则:
- 动词尽量清楚
- 范围尽量单一
- 不要写成“update code”“fix stuff”这种以后看不懂的话
常见误区
误区 1:把 git add 当成提交
不是。它只是准备提交内容。
误区 2:一次改很多东西,一次全提
这会让后面 review、回滚和排障都更难。
误区 3:提交前不看 git status
这样很容易把无关文件也一起带进去。
误区 4:一看到文件改了就直接 git add .
git add . 并不是不能用,但在初学阶段更建议你优先学会按文件选择,比如:
git add README.md
这样更容易建立“提交边界”的意识。
特殊情况
- 如果 commit 报身份信息错误,先回到上一页配置
user.name和user.email - 如果你发现自己暂存错了文件,先不要慌,通常还可以重新调整暂存区
- 如果工作区和暂存区都很乱,先不要硬 commit,先把提交边界想清楚
- 如果一次修改里混进了格式化、重命名、功能修改等多种变化,更要分开提交
这一页的练习清单
建议至少完成下面 3 轮练习:
- 改 1 个文件并提交
- 改 2 个文件,但只暂存其中 1 个再提交
- 提交后用
git log --oneline和git show --stat HEAD回看结果
下一步
暂存与 commit 稳了以后,就可以进入 远端同步。