Git 工作区、暂存区和版本库
主题
- 默认模式
- 浅蓝色模式
- 淡绿色模式
- 深夜模式
基本概念
我们先来理解下 Git 工作区、暂存区和版本库概念:
- 工作区:项目的本地目录,是用户直接编辑文件的地方。
- 暂存区:一个中间区域,临时存放用户准备提交的改动。
- 版本库:Git 存储项目历史记录的数据库,位于本地仓库的
.git
目录中。
Git 的流程本质:
- 工作区(编辑文件) →
git add
→ 暂存区(临时存储) - 暂存区(临时存储) →
git commit
→ 版本库(本地永久存储) - 版本库(本地永久存储) →
git push
→ 远程仓库(远程永久存储)
Git 工作区
工作区(Working Directory)是 Git 版本控制中的一个核心概念,也是开发者直接编辑文件的地方。
工作区包含所有已修改、新增或删除但尚未被 Git 跟踪或暂存的文件。
1. 工作区的文件状态可能是:
- 未跟踪(Untracked):新文件,未被 Git 管理。
- 已修改(Modified):已跟踪的文件被更改,但未暂存。
- 已暂存(Staged):通过
git add
标记为待提交。
2. 工作区与暂存区、版本库的关系:
工作区 → `git add` → 暂存区 → `git commit` → 版本库 → `git push` → 远程仓库
工作区的改动不会自动进入 Git 历史,必须显式执行git add
和git commit
。
3. 工作区常用命令:
关键点 | 命令示例 |
查看工作区状态 | git status |
撤销单个文件的修改 | git restore <file> |
恢复所有文件 | git restore . |
极端情况:重置工作区和暂存区(慎用!) | git reset --hard |
将文件添加到暂存区 | git add <file> |
从暂存区撤回文件 | git restore --staged <file> |
从最近一次提交恢复文件到工作区 | git checkout HEAD -- <file> |
Git 暂存区
暂存区(Staging Area,也称 Index)是 Git 的核心设计之一,它充当工作区与版本库之间的缓冲区。
暂存区解决了文件的选择性提交以及文件提交前的安全审查。
暂存区的操作命令:
I 添加文件到暂存区
git add <file> # 添加单个文件
git add . # 添加所有修改和新增文件(不包含删除)
git add -A # 添加所有改动(包括删除的文件)
git add -p # 交互式选择部分改动暂存
II 从暂存区移除文件
git restore --staged <file> # Git 2.23+ 推荐方式
git reset HEAD <file> # 旧版 Git 等效命令
- 作用:将文件从暂存区移回工作区,保留文件改动。
III 查看暂存区状态
git status # 查看暂存区和工作区的差异
git diff --cached # 查看暂存区与最新提交的差异
Git 版本库
版本库(Repository,简称 Repo)是 Git 的核心存储系统,位于项目根目录下的隐藏文件夹.git/
中。
版本库负责永久保存所有的提交历史、分支、标签等数据。
工作区、暂存区和版本库之间的关系
1. 工作区 -> 暂存区
使用git add
命令将工作区中的修改添加到暂存区。
git add <file> # 添加单个文件
git add . # 添加所有改动(包括未跟踪文件)
git add -p # 交互式选择部分改动暂存
2. 暂存区 -> 版本库
使用git commit
命令将暂存区中的修改提交到版本库。
git commit -m "提交说明"
3. 版本库 -> 远程仓库
使用git push
命令将本地版本库的提交推送到远程仓库。
git push origin branch-name
4. 远程仓库 -> 本地版本库
使用git pull
或git fetch
命令从远程仓库获取更新。
git pull origin branch-name
# 或者
git fetch origin branch-name
git merge origin/branch-name
评论区 0
发表评论
教程介绍
Git 是一个分布式版本控制系统,用于高效管理文件的修改历史,支持多人协作开发。
6
章节
13
阅读
0
评论
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈