美文网首页随笔
【Git】工作原理

【Git】工作原理

作者: 熊本极客 | 来源:发表于2023-03-14 22:31 被阅读0次

    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

    相关文章

      网友评论

        本文标题:【Git】工作原理

        本文链接:https://www.haomeiwen.com/subject/exdkrdtx.html