git分支简介

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。
有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。 理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。
git中存储的不是每个文件的变化或者差异,而是每次提交的快照.来分析一下:
在进行commit时,git会保存一个提交对象(commit object),那么很明显的就知道,本次保存的对象是一个指向暂存内容快照的指针.但不仅仅是这样,还包含了作者的姓名信息,还有commit时的一些信息,还有就是指向其父对象的指针

为了更加形象的说明,假设现在在工作区中,有三个将要被暂存和提交的文件.暂存操作会为每一个文件计算校验和,然后会把当前版本的文件快照存储到git仓库中,git将使用blob对象来保存,最终将校验和加入暂存区域commit.
当使用git commit时,git会先计算每一个子目录的校验和,然后git仓库中这些校验和保存为树对象.随后git会创建一个提交对象,它包含了上面提高的信息外,还包含了指向这个树对象的指针.
所以,git中现在包含了五个对象,三个blob对象(包含三个文件的校验和,其实就是快照) + 一个 树对象(记录目录结构和blob对象索引) + 一个提交对象.

git分支,其实本质上仅仅是指向提交对象的可变指针.git之中默认分支的名字是master.在多次提交操作之后,其实已经有一个指向最后那个提交对象的master分支,master分支会在每次提交时向前移动.git分支是如何创建的呢,很简单,其实只是创建了一个可以移动的新的指针.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为了真正理解 Git 处理分支的方式,我们需要回顾一下 Git 是如何保存数据的。 或许你还记得 起步 的内容,G...
    温酒居士阅读 4,247评论 0 8
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 10,371评论 0 9
  • 前言 在本章中,我们将介绍一个分布式版本控制系统的设计思路,以及它与集中式版本控制系统的不同之处。除此之外,我们还...
    香沙小熊阅读 4,334评论 0 9
  • 使用git进行版本管理 常识 文件的几个状态:Untracked,Unmodified(已修改,此时文件在工作目录...
    前端开发爱好者阅读 4,028评论 0 0
  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 5,299评论 0 3