GIT的工作流程
三种状态
文件的三种状态:已提交(committed)、已修改(modified)和已暂存(staged)
-
已修改,表示修改了文件,但还没保存到数据库中。
-
已暂存,表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
-
已提交,表示数据已经安全的保存在本地数据库中。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
三个工作区域
Git 项目的三个工作区域:工作区、暂存区以及仓库区
-
工作区(workspace):就是你在电脑里能看到的目录。
-
暂存区(staging area):一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),保存了下次将提交的文件列表信息。
-
仓库区( local repository & remote repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库,用来保存项目的元数据和对象数据库的地方。

Git 工作流程
基本的 Git 工作流程如下:克隆、检出、增删改、暂存、提交、推送
-
克隆:从远程仓库中克隆项目到本地(git clone; git init)* 克隆或创建的目的都是产生一个本地仓库;
-
检出:检出或切换分支(git branch; git checkout)* 切换分支只替换工作区内容,因此,多个分支不需要多个目录;切换分支后,工作区还原到分支创建时或最后更新时的样子;* 执行 git init 的时候,默认情况下 Git 会创建 一个 名为master 的分支,并且将该分支作为当前分支;
-
增删改:添加修改工作区上的文件——主要工作内容(git status; git diff; git reset; git rm; git mv; git merge)* 合并分支时会产生冲突, 需要手动去修改, 修改后,用 git add 告诉 Git 文件冲突已经解决;* 可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支;
-
暂存:将文件的快照放入暂存区域(git add)
-
提交:将暂存区域的文件快照永久性存储到 Git 仓库目录(git commit)
-
推送:将本地项目的修改推送到远程仓库中(git push)* git push 将本地分支合并到远程分支“或上传作为远程仓库的一个分支”; 如果本地分支名与远程分支名相同,可以省略命令行中的远程分支名;如果合并时发生冲突,则会push 失败,需要 pull 或 fetch先。* git pull 将远程分支直接合并到本地分支“或将远程仓库的某一分支下载为本地的一个分支”; 如果是拉取到当前分支,可以省略命令行中的本地分支名; 可能会产生冲突,需要手动解决;* git fetch 将远程分支拉取到本地,用户检查远程分支的更新内容之后,判断是否与本地冲突等,再决定是否合并到本地分支中( git merge);* git romote 主要用于编辑存于本地的“远程仓库的基本信息”,包括为一个或多个远程仓库创建(增删改)别名、为某一远程仓库的别名“配置(增删改)”url等;origin 为 git clone 时 为所克隆的远程仓库创建的默认别名。
三个命令级别
【byFelix,三个命令级别——并非严谨的归纳】git命令操作对象可以粗略的分为三个级别:
(1)操作对象为文件或目录,可以称为文件级git命令;
(2)操作对象为分支的,可以称为分支级git命令;
(3)操作对象为库的,可以称为库级git命令;
如此分级,有利于理解git命令。除按操作对象分级外,也可以按命令结果进行,例如,如果结果主要是文件信息,则为文件级命令。
-
库级:git clone; git init; git romote
-
分支级:git branch; git checkout; git push; git pull; git fetch
-
文件级:git status; git diff; git reset; git rm; git mv; git merge; git add; git commit; git log; git blame
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?