前面我们已经知道 Git 可以记录项目的修改历史,也学会了如何创建或 Clone 一个 Git Repository。接下来就要开始学习 Git 最核心、也是日常开发中最常用的一套操作流程:修改文件 → 添加到暂存区 → 创建 Commit。
刚接触 Git 时,最容易让人困惑的地方之一,就是“为什么修改完文件以后不能直接 Commit?”原因是 Git 在真正保存一次 Commit 之前,中间还有一个叫做 暂存区(Staging Area) 的步骤。
可以把 Git 中的文件状态简单理解成三个区域:
| 当前区域 | 执行命令 | 修改进入 |
|---|---|---|
| 工作区(Working Directory) | git add | 暂存区(Staging Area) |
| 暂存区(Staging Area) | git commit | 本地仓库(Local Repository) |
工作区(Working Directory) 就是你平时真正修改代码和文件的地方。例如你在 VS Code 中打开一个项目,修改 index.html、app.js 或 README.md,这些正在编辑的文件就处于工作区。
当你确认某些修改准备放进下一次 Commit 时,可以使用 git add 把它们加入 暂存区(Staging Area)。暂存区可以理解成一个“下一次 Commit 的准备清单”。进入暂存区的文件,并不代表已经正式保存到了 Git 历史中,而只是告诉 Git:“我准备把这些修改放进下一次 Commit。”
最后,使用 git commit 才会真正创建一条新的提交记录。Commit 会被保存到 本地仓库(Local Repository) 中,也就是你电脑上的 Git 历史记录。
例如,假设你同时修改了三个文件:
index.html
style.css
README.md但这一次你只想提交网页相关的修改,而不想提交 README.md。那么你可以只把前两个文件加入暂存区:
git add index.html style.css然后执行:
git commit这样,这次 Commit 中就只会包含 index.html 和 style.css 的修改,而 README.md 会继续留在工作区中。
这也是暂存区存在的重要原因:它让我们可以决定哪些修改应该属于同一次 Commit。
对于初学者来说,不需要一开始就理解 Git 内部是如何实现这些区域的。只要先记住下面这条工作流程即可:
- 修改文件。
- 使用
git add准备好要提交的修改。 - 使用
git commit生成一条 Commit 记录。
文件状态传送带
—
—
—
先点击文件上的“修改”,观察它进入工作区。为什么要分成 Add 和 Commit 两步?
假设你今天同时做了两件事情:修复了一个登录 Bug,又修改了 README 文档。如果直接把所有修改一次性保存,很容易让一个 Commit 中混入完全不同的内容。
更好的做法是分别处理:
Commit 1: Fix login bug
Commit 2: Update README使用暂存区以后,你可以先把登录相关的文件 git add,创建第一个 Commit,然后再把 README 加入暂存区,创建第二个 Commit。这样历史记录会更加清楚,以后其他人查看代码时,也更容易理解每次修改是为了什么。
知识测验
git status 是非常重要的辅助命令
在整个工作流程中,git status 是一个非常常用的命令:
git status它可以帮助你确认目前有哪些文件被修改、哪些文件已经加入暂存区,以及哪些文件还没有被 Git 跟踪。
对于初学者来说,一个非常实用的习惯是:只要你不确定当前 Git 的状态,就运行一次 git status。
练习
你同时修改了 index.html、style.css 和 README.md,但希望网页修改和文档修改形成两个 Commit。写出从查看状态开始的命令顺序,并给两个 Commit 编写 Message。