Git 核心概念
#git
#版本控制
#基础概念
Git 核心概念#
Git 的核心在于理解五大区域和文件状态的流转。掌握这些概念是高效使用 Git 的基础。
工作区(Working Directory)#
工作区是你在本地计算机上看到的项目文件目录。所有对文件的更改首先发生在工作区中。
文件状态#
工作区中的文件可能处于以下几种状态:
| 状态 | 英文 | 含义 |
|---|---|---|
| 未跟踪 | Untracked | 新创建的文件,未被 Git 记录 |
| 已跟踪 | Tracked | 已被 Git 管理的文件 |
| 已修改 | Modified | 已跟踪的文件发生了更改,但未暂存 |
| 已暂存 | Staged | 修改已添加到暂存区,等待提交 |
| 已提交 | Committed | 暂存区内容已提交到版本库 |
状态流转图#
git add git commit
[未跟踪] ─────────→ [已暂存] ─────────→ [已提交]
↑ │
│ 工作区修改 │
└────────── [已修改] ←────────────────────┘
│
└──── git add ────→ [已暂存]
✨ 技巧
两组概念的区别
- 已跟踪 vs 未跟踪:回答的是「Git 认不认识这个文件?」(身份问题)
- 已暂存 vs 已修改:回答的是「这个文件的最新改动准备好提交了吗?」(进度问题)
暂存区(Index / Stage)#
暂存区是一个临时存储区域,用于保存即将提交到本地仓库的更改。
# 将指定文件添加到暂存区
git add <filename>
# 将当前目录下所有更改添加到暂存区
git add .
暂存区的作用:允许你选择性地将工作目录中的更改添加到暂存区,这样可以一次提交多个文件的更改,而不必提交所有文件。
本地版本库(Local Repository)#
本地版本库是一个隐藏在 .git 目录中的数据库,用于存储项目的所有提交历史记录。
# 将暂存区的更改提交到本地版本库
git commit -m "commit message"
💡 提示
版本库的分类
- 本地版本库:存储在
.git目录(隐藏文件夹)中,包含所有提交的对象和引用 - 远程版本库:存储在远程服务器上(如 GitHub、GitLab),用于团队协作和代码备份
远程版本库(Remote Repository)#
远程版本库存储在远程服务器上,用于团队协作和代码备份。常见的远程仓库托管服务包括 GitHub、GitLab、Gitee 等。
# 将本地更改推送到远程版本库
git push origin <branch-name>
# 从远程版本库拉取更改
git pull origin <branch-name>
储藏区(Stash)#
储藏区用于临时保存工作区和暂存区的更改,以便切换分支或处理其他任务。
# 储藏当前更改
git stash
# 恢复储藏的更改
git stash pop
五大区域的关系#
┌─────────────────────────────────────────────────────────────┐
│ Git 五大区域 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ git add ┌──────────┐ git commit │
│ │ 工作区 │ ──────────→ │ 暂存区 │ ──────────→ │
│ │ (Working) │ │ (Stage) │ │
│ └──────────┘ └──────────┘ │
│ │ │
│ │ ┌──────────┐ │
│ │ git stash │ 储藏区 │ │
│ └─────────────────────→ │ (Stash) │ │
│ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 本地版本库 │ ←── git pull │ 远程版本库 │ │
│ │ (Local) │ ── git push → │ (Remote) │ │
│ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
相关笔记:
- 环境配置与仓库初始化 — Git 环境搭建和仓库创建
- 暂存与提交 — 暂存区和提交的详细操作