在 Git 的世界里,一个文件要经历三个地方才能完成一次完美的本地存档:
- 工作区 (Working Directory):本地电脑看见的文件夹。你可以在本地文件夹里敲代码、删文件,此时的修改处于“不受保护”的状态。
- 暂存区 (Staging Area):一个临时准备区(执行
git add后的地方)。相当于你在把物品打包进存档箱,但还没按下确认保存。 - 本地仓库 (Local Repository):最终的基地(执行
git commit后的地方)。一旦进入这里,快照就正式永久写入了 Git 的历史中,再也不怕丢失。
─── 敲代码 ───> ─── 准备好 ───> ─── 封箱存档 ───>
[ 工作区 (Workspace) ] ──> [ 暂存区 (Index) ] ──> [ 本地仓库 (Repository) ]远程仓库 (Remote Repository):最终同步到云端或服务器的云端存档(如 GitHub / GitLab / Gitee)。通过 git push 上传,通过 git pull 获取更新,是多人协作的核心枢纽。
工作区#
工作区就是实际编辑文件的项目目录。
例如:
my-project/
├── index.html
├── style.css
└── app.js使用编辑器修改 app.js,修改首先发生在工作区。
暂存区#
暂存区用于保存即将提交的修改。
执行:
git add app.js表示把 app.js 当前的修改放入暂存区。
暂存区的作用是让开发者选择哪些修改进入下一次提交。
例如,同时修改了三个文件:
index.html
style.css
app.js但本次只想提交 JavaScript 修改,可以执行:
git add app.js
git commit -m "修复任务添加逻辑"其他文件仍然保留在工作区。
本地仓库#
执行提交后,暂存区中的内容会进入本地仓库:
git commit -m "完成登录功能"本地仓库保存在项目中的 .git 目录里。
.git 目录包含:
- 提交记录;
- 分支信息;
- 标签信息;
- 仓库配置;
- Git 对象;
- 暂存区数据。
警告
不要随意删除 .git 目录。
远程仓库#
远程仓库通常托管在:
- GitHub;
- GitLab;
- Gitee;
- 企业内部 Git 服务。
本地提交可以通过下面的命令推送到远程仓库:
git push远程仓库中的更新可以通过下面的命令获取:
git pullGit 的四个区域工作流程#
Git 的基本流转过程是:
工作区
↓ git add
暂存区
↓ git commit
本地仓库
↓ git push
远程仓库从远程仓库同步到本地:
远程仓库
↓ git fetch / git pull
本地仓库和工作区文件状态#
Git 文件常见状态包括:
Untracked#
未跟踪文件。
文件已经存在于工作区,但 Git 还没有开始管理它。
Modified#
文件已经被 Git 跟踪,但内容发生了修改。
Staged#
文件修改已经通过 git add 放入暂存区。
Committed#
文件修改已经通过 git commit 保存到本地仓库。
Commit#
Commit 是 Git 中的提交记录。
每次提交可以理解为项目的一个历史快照。
提交通常包含:
- 唯一提交哈希;
- 作者信息;
- 提交时间;
- 提交说明;
- 文件变化;
- 父提交信息。
查看提交记录:
git logHEAD#
HEAD 表示当前所在位置。
通常情况下,HEAD 指向当前分支的最新提交。
例如:
HEAD → main → 最新提交HEAD~1 表示当前提交的上一个提交。
HEAD~2 表示当前提交向前数两个提交。