(最新版)Git&GitHub实操图文详解教程(03)—Git工作原理


版权声明


Git组成部分

Git 由四部分组成:工作目录(Working Directory)、暂存区(Staging Area,又被称为 Index)、本地仓库(Local Repository)和远程仓库(Remote Repository)。

1. 工作目录(Working Directory)

工作目录是开发者本地设备上的一个文件夹。它包含了从 Git 版本库中提取出来的特定版本的文件副本,供开发者在此进行日常的代码编写、修改、删除和测试等工作。所有尚未被 Git 追踪或记录的本地变更均首先发生在这个区域。

2. 暂存区(Staging Area / Index)

暂存区是位于工作目录与本地仓库之间的缓冲,通常体现为 Git 目录下的一个索引文件。它记录了开发者意图在下一次提交(commit)中保存的文件状态及其快照。通过将工作目录中的特定修改添加到暂存区,开发者可以精准地组织和控制下一次提交的具体内容,而非被迫提交所有变更。

3. 本地仓库(Local Repository)

本地仓库是隐藏在项目根目录下(即 .git 文件夹)的本地数据库,存储着项目的完整演进历史。它包含了所有的提交记录(commits)、分支(branches)、标签(tags)以及文件的历史快照。当暂存区的内容被正式提交后,这些快照便会永久性地安全存入本地仓库中,形成版本控制历史的新节点。

4. 远程仓库(Remote Repository)

远程仓库是托管在网络服务器中的项目版本库,常见的远程仓库包括: GitHub、GitLab 或企业内部服务器等。远程仓库是团队成员之间实现代码共享、协作与数据同步的核心枢纽。开发者通过推送(push)操作将本地仓库的最新提交上传至远程仓库,或通过拉取(pull/fetch)操作获取他人的更新,完成分布式的协同开发。

Git数据流转过程

Git 的数据流转可概括为如下过程。所有工作均始于工作目录 ,开发者在此创建、修改或删除文件,此时这些变更尚未被 Git 正式记录。为了将变更纳入版本管理,首先需要通过 git add 命令,将工作目录中选定的文件或修改内容登记到暂存区 。当暂存区的内容经过确认后,执行 git commit 将这些暂存区的代码存入本地仓库 ,形成一条包含作者、时间戳及描述信息的不可变提交记录。若需要与团队共享代码或同步远程版本,开发者可以通过 git push 将本地仓库中的提交上传到远程仓库 ;反之,通过 git fetchgit pull 可以从远程仓库获取他人发布的最新提交,并同步回本地仓库及工作目录,供下一步开发使用。

由此,Git 形成了"工作目录 → 暂存区 → 本地仓库 → 远程仓库"的完整数据流转链路,使本地开发、版本记录与团队协作得以有序衔接。

Git中文件的状态

Git中的文件存在四种状态,详情如下:

Untracked :即文件未跟踪状态。表示该文件存在于工作区中,但尚未被 Git 跟踪,因此不参与版本控制。在此状态下,可通过 git add 将其状态变为 Staged

Unmodified :即文件已提交至本地仓库,且本地仓库中的文件快照内容与工作区中的文件内容完全一致。该类型的文件有两种去向:如果文件被修改,则状态变为 Modified ;如果使用 git rm --cached 将文件移出版本控制,则文件重新变为 Untracked 状态。

Modified :即文件已修改状态,表示工作区中的文件内容已发生变化,但这些修改尚未加入暂存区。该文件有两个去向:通过 git add 进入 Staged 状态;或者使用 git restore 丢弃当前修改,恢复为 Unmodified 状态。旧版本 Git 中也可以使用 git checkout -- 文件名 完成相同操作。

Staged :即文件暂存状态,表示文件修改已被加入暂存区,准备参与下一次提交。执行 git commit 后,暂存区中的内容会被提交到本地仓库,此时本地仓库中的文件快照与工作区文件保持一致,文件状态变为 Unmodified 。在该状态下,如果执行 git restore --staged 取消暂存,则文件状态返回为 Modified 。旧版本 Git 中通常使用 git reset HEAD 文件名 完成该操作。

图示如下:

相关推荐
tokenKe5 小时前
Tencent BrowserSkill :让 AI Agent 借用你的真实浏览器| 已登录浏览器与编码 Agent 之间的本地桥 |SSP
chrome·开源·github
玄芯散人9 小时前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
今夕资源网10 小时前
把 DeepSeek 网页版变成能操作本地项目的 AI Agent:Cuckoo Code 使用指南 GitHub开源
开源·github·deepseek
徐小夕11 小时前
存量.doc 文档怎么办?JitWord 开源转换库打通旧文档到在线协同全链路
后端·架构·github
GHOME11 小时前
CI/CD 学习笔记:GitHub Actions 项目实战
github
troy12811 小时前
Codex 安全盲区:代码漏洞生成实测
windows·python·ci/cd·pycharm·django·github·fastapi
其实防守也摸鱼12 小时前
常见安全架构中 Shiro 的认证确认机制解析
运维·服务器·数据库·windows·github
寺中人12 小时前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(75):TiMem——用时间记忆树实现长期记忆的层级巩固
论文阅读·人工智能·学习·开源·github
荔枝梅梅14 小时前
新手程序员 SSH 第一课:从 Git 仓库连接失败理解 SSH 协议与密钥配置
git