git原理

作者: 小张同学_loveZY | 来源:发表于2018-08-17 15:10 被阅读0次

git 工作区与暂存区

git-tree
  • 工作区: 就是我们看得到在写代码的地方
  • 版本库: git维护的区域,存放在.git中
  • git add 只是加到了stage中
  • git commit 将stage存放到master中

.git目录分析

git init 时,Git 会创建一个 .git 目录

新建的git仓库的目录

  • HEAD
  • config
  • description
  • hooks
  • info
  • objects
  • refs

老仓库的一个示例

  • HEAD:
    目前被检出的分支 例如:ref: refs/heads/f_zbq_gitlab-runner_20180817
  • config:
    项目特有的配置选项
  • description:
    gitweb用来显示对repo的描述
  • hooks/:
    钩子脚本,commit提交前后的执行
  • info/:
    全局性排除(global exclude)文件 .gitignore 中定义的文件
  • objects/: 存储所有数据内容
  • refs/:
    存储指向数据(分支)的提交对象的指针
  • index
    保存暂存区信息
  • logs/
    历史版本信息
  • packed-refs
  • COMMIT_EDITMSG

git 对象内部存储

Git 是一个内容寻址文件系统,其实就是一个键值对数据库。

hash-object:命令存储数据对象,用值的hash值作为键存储数据

cat-file: 通过键获得值

git内部的数据组织为树结构,其中blob结构为文件,tree结构为文件夹,类似组合模式。

git-tree

内部指针关系图:


git-refs

分析

概念分析:

  1. 工作区,stash区,master区

  2. 指针:指向对应的工作分支 | 提交分支,每一个分支又通过内部指针关系建立起饮用关系,形成如同树结构的形式。这里每一个数据都是通过hash保存的,键为SHA-1加密字符串。

  3. 引用:git通过命名引用来指向分支,功能和指针一样,但是提供了可读的理解字段。

正常提交过程:

  • 1.编写本地的文件
  • 2.将文件通过git add 加入到stash中
  • 3.加入到stash中的所有文件通过git commit 加入到 master 中
  • 4.git push 上传数据

回滚过程:

  • 通过refs名定位到内部的refs,然后用引用代替掉HEAD,从而实现回滚

  • git diff 比较几个不同引用的内容值,输出结果

等等等等。。。。。

相关文章

  • git理解

    内部原理实例git命令 内部原理 当git init 时,Git 会创建一个 .git 目录。 这个目录包含了几乎...

  • git操作

    Git原理 Git常用命令

  • Git 内部原理

    Git 内部原理

  • 最简洁的Git介绍

    一、解决问题 1、Git原理;2、Git的常见操作;3、Git常见问题以及相关操作; 二、Git原理 1、四大区域...

  • git

    Git Git安装官网下载Git Git工作原理(图)imageWorkspace:工作区 (目录)Index /...

  • Git

    Git Git安装官网下载Git Git工作原理(图)imageWorkspace:工作区 (目录)Index /...

  • Git学习之旅 - Basic Snapshotting(基本

    想要了解git add,commit原理的可以参考下面文章,非常有用,强烈推荐。Git 原理入门 学习Git时候,...

  • 2018-07-12

    内容 基本原理 git 常用命令 较底层的原理 基本原理 Git 实际上是一个内容寻址系统。 Git 中保存的所有...

  • git的工作原理

    git的工作原理

  • Git

    Git 1、Git安装 官方下载Git 2、Git工作原理(图) Workspace:工作区 (目录)Index ...

网友评论

      本文标题:git原理

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