(最新版)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 文件名 完成该操作。

图示如下:

相关推荐
devilnumber2 小时前
idea中git的commit弹出框改为工具框
git
STDD2 小时前
Teeworlds / DDNet 服务器搭建:经典 2D 竞技平台游戏
服务器·游戏·github
STDD3 小时前
Alien Swarm《异星虫群》: Reactive Drop 专用服务器搭建教程
运维·服务器·github
OpenTiny社区3 小时前
2026 OpenTiny NEXT 产品调研启动!
前端·开源·github
向日的葵0064 小时前
大模型技术之git(第四章)
git
火车叼位4 小时前
当 Git Pull 把工作区搅成一锅粥:理解 Merge 与 Abort
git
逛逛GitHub5 小时前
推荐 8 个本周 YYDS 的 GitHub 开源项目。
github
逛逛GitHub5 小时前
这个 GitHub 上 1.6 万人点赞 AI PPT 工具,生成的 PPT 能编辑。
github
向日的葵0065 小时前
大模型技术之git(第六章)
git