6.2 初始化仓库与读懂当前改动:工作区、暂存区、提交点
面向经管学生、研究者与从业者的 AI 智能体设计教材

很多读者第一次学 Git,会被大量术语吓住。对本书来说,不需要先背模型图,只要先把三个位置分清:现在正在改的地方、准备提交的地方、已经写进历史的地方。
第一次进入项目时先做什么
如果项目还没有 Git 仓库,先在项目根目录执行:
git init
git status
git init 会在当前目录创建 Git 仓库。git status 用来确认现场:哪些文件还没被跟踪,哪些文件已经修改,当前是否已经有提交历史。
如果项目里本来就有大量不该纳入版本控制的产物,先补一个最小 .gitignore。书稿项目最常见的起点如下:
cat > .gitignore <<'EOF'
_book/
.quarto/
.DS_Store
*.log
EOF
然后把忽略规则本身也纳入版本控制:
git add .gitignore
git commit -m "chore: add initial gitignore"
工作区、暂存区和提交点
可以把最常见的三个位置理解为三句话:
- 工作区:你此刻正在改的文件现场
- 暂存区:你准备放进下一次提交的那部分改动
- 提交点:已经进入历史、可以比较和回退的版本节点
三区概念
工作区(Working Directory)是当前文件的实际状态;暂存区(Staging Area)是下次提交的预备区域;提交点(Commit)是已写入历史的版本快照。所有 Git 操作都在这三个位置之间移动数据。
对应的最常用命令如下:
| 命令 | 作用 |
|---|---|
git status |
看现场状态 |
git diff |
看工作区相对上一次提交改了什么 |
git add <file> |
把指定改动放进暂存区 |
git diff --cached |
看暂存区里准备提交什么 |
git commit -m "..." |
形成新的提交点 |
这几个命令要连起来理解,而不是分开记。
先看改动,再决定是否暂存
最容易养成的坏习惯,是让智能体改完以后直接提交。更稳的顺序应该是:
git status
git diff
如果只想看某个文件,命令更具体:
git diff chapters/chapter-6/section-6-3.qmd
如果你已经执行过 git add,还要再看一遍暂存区:
git diff --cached
这样做的价值很直接:提交之前,先确认自己到底在送什么进历史。
先把这三个位置记清,后面的分支、Worktree 和回退才有扎实基础。
最小习惯
每轮正式提交前,至少看一次 git status 和一次 git diff。这两个动作很便宜,却能挡住大量误提交。