第 2 章 · 01 基础概念与日常操作 本节摘要:Git 的一切操作都可以映射到"三区域"心智模型上:工作目录、暂存区、Git 目录。本节把三区域讲透,再覆盖日常高频操作:判断仓库、pull 与 fetch 的区别、gitignore 的用法、status/diff/add 的职责分工。学完本节,你能解释"每个 Git 命令动的是哪个区"。 学习目标 说出 Git 三区域的职责与对应命令。 区分 git pull 与 git fetch。 说出 gitignore 的作用与取消跟踪的方法。 说出 git status 与 git diff 的分工。
本节摘要:Git 的一切操作都可以映射到"三区域"心智模型上:工作目录、暂存区、Git 目录。本节把三区域讲透,再覆盖日常高频操作:判断仓库、pull 与 fetch 的区别、gitignore 的用法、status/diff/add 的职责分工。学完本节,你能解释"每个 Git 命令动的是哪个区"。
| 区域 | 是什么 | 关键命令 |
|---|---|---|
| 工作目录 | 检出的一个版本快照,你修改的文件在这里 | 直接编辑 |
| 暂存区(索引) | 记录"下一次提交将包含什么"的文件 | git add |
| Git 目录 | 存储元数据与对象数据库,clone 时被完整复制 |
git commit |
怎么判断目录是不是 git 仓库:看是否存在 .git 目录。
三区域 × 状态:工作目录里有改动但既不在 HEAD 也不在暂存区 → 称为 unstaged;暂存区里有了 → staged;已提交 → committed。
| 命令 | 职责 |
|---|---|
git status |
理解仓库跟踪状态:哪些改动在工作目录、哪些在暂存区、哪些文件未被跟踪 |
git diff |
对比差异:可对比两个提交、两个文件、树与暂存区等;提交前用它检查即将提交什么 |
git add FILES |
把新文件/改动加入暂存区,让 Git 开始跟踪 |
判断文件是否被跟踪:
git ls-files <file> # 退出码 0 = 已跟踪 git blame <file> # 能出结果 = 已跟踪
新文件跟踪:git add FILES 即可。
核心公式:git pull = git fetch + git merge
git fetch:把远端所有变更拉到本地,存到独立分支(如 origin/main),不影响当前工作分支——只看不并。git pull:拉取变更并直接合并到当前分支——拉完即并。记忆:fetch 是"下载",pull 是"下载+合并"。想先审查远端变更再决定是否合并,用 fetch;想直接同步,用 pull。
gitignore 的用途:确保某些文件永远不被 Git 跟踪(密钥、构建产物、日志、本地配置)。
# .gitignore 示例 *.log .env node_modules/
关键区别:
.gitignore 即可永远忽略;git rm --cached <file> 先取消跟踪(文件保留在磁盘上)。要彻底停止跟踪某个已跟踪文件:git rm --cached + 加入 .gitignore + 提交。
git rm --cached。下一节预告:单分支操作熟练后,进入分支合并与历史管理——merge、rebase、reset 的世界。