Git 核心概念

理解 Git 的五大区域和文件状态流转机制

#Git #版本控制 #基础概念

Git 的核心在于理解五大区域和文件状态的流转。掌握这些概念是高效使用 Git 的基础。

Git 五大区域

工作区(Working Directory)编辑项目文件,修改首先发生在这里。git status · git diff
暂存区(Index / Stage)选择下一次提交要记录的内容。git add · git diff --cached
本地版本库(Local Repository)保存提交对象与本地版本历史。git commit · git log
远程版本库(Remote Repository)协作与共享提交历史。git fetch · git push
储藏区(Stash)临时收起未完成的修改,稍后恢复。git stash · git stash pop

工作区(Working Directory)

工作区是你在本地计算机上看到的项目文件目录。所有对文件的更改首先发生在工作区中。

文件状态

工作区中的文件可能处于以下几种状态:

状态英文含义
未跟踪Untracked新创建的文件,未被 Git 记录
已跟踪Tracked已被 Git 管理的文件
已修改Modified已跟踪的文件发生了更改,但未暂存
已暂存Staged修改已添加到暂存区,等待提交
已提交Committed暂存区内容已提交到版本库

状态流转图

Git 文件状态流转

图表加载后显示;也可展开查看下方源码。

查看 Mermaid 源码
flowchart LR
  accTitle: Git 文件状态流转
  U["未跟踪"] -->|git add| S["已暂存"]
  S -->|git commit| C["已提交"]
  C -->|编辑文件| M["已修改"]
  M -->|git add| S
✨ 技巧

两组概念的区别

  • 已跟踪 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 五大区域与常用操作

图表加载后显示;也可展开查看下方源码。

查看 Mermaid 源码
flowchart LR
  accTitle: Git 五大区域与常用操作
  W["工作区"] -->|git add| I["暂存区"]
  I -->|git commit| L["本地版本库"]
  L -->|git push| R["远程版本库"]
  R -->|git fetch| L
  L -->|git switch / restore| W
  W -->|git stash| S["储藏区"]
  S -->|git stash pop / apply| W

git pull 会先 fetch,再把获取的提交通过 merge 或 rebase 整合到当前分支;它不只是复制远程仓库到本地。


相关笔记:

流程图