【Git】工作原理

1.工作流程

Git 是目前主流的版本控制系统,其通用流程如下。

image.png
image.png

Git 的工作流程分类

  • 最简模式
  • 特性分支
  • 开发分支
  • 特性分支 + 开发分支

1.1 最简模式

最简单的工作流模式,即只使用 master 主干,适用于个人项目。

image.png

1.2 Feature 特征分支

每个 feature 分支都是用来开发某个新功能。当 feature 分支中的功能开发完成后,这个分支就回合 master 主干。

image.png

1.3 Developer 开发分支

开发分支基于 master 主干创建,并与 master 一样长期存在。开发分支是开发时随时提交的代码,master 分支中是达到可发布状态的代码。

image.png

1.4 Developer + Feature 混搭

master 主干是可发布的代码。feature 分支只与 developer 分支合并。当 developer 分支中的代码测试通过后,回合 master 主干并发布。

image.png

2.核心概念

Git 工作区、暂存区和版本库是基本的核心概念。

  • 工作区:电脑中代码的工作目录 workspace
  • 暂存区:存放在 ".git目录下" 下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,即 Git 的版本库

如下所示工作区、版本库中的暂存区和版本库之间的关系。在版本库中标记为 index 的区域是暂存区(stage/index),标记为 master 的是远端 master 主干 pull 到本地版本库。图中的 objects 标识的区域是 Git 的对象库,实际位于 .git/objects 目录下。

当对工作区新增或修改的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区新增或修改的文件内容被写入到对象库 objects 中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

当执行提交操作 git commit 时,暂存区的目录树写到版本库的对象库 objects 中,master 本地版本库也会把指向的目录树转移到暂存区的目录树。

当执行 git reset HEAD 时,暂存区的目录树会被重写,被 master 指向的目录树所替换,但是工作区不受影响。 当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。

当执行 git checkout . 或者 git checkout -- 命令时,将暂存区全部或指定文件替换到工作区的文件。当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 全部或者部分文件替换暂存区和以及工作区中的文件。

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容