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) │                   │
│   └──────────┘              └──────────┘                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

相关笔记