上次的博文Git实战(一)版本号控制概述中我们简介了一下版本号控制系统的概念,重点对版本号控制的三种类型进行了分析和对照,从本篇博文開始我们进入Git的世界,首先介绍一下Git实现版本号控制的原理。

Git与SVN等其它版本号控制系统的最重要的一点差别在于,Git仅仅关心文件数据的总体是否变化,而不是关心文件内容的差异。

SVN等原理分析

怎样理解呢?我们能够通过两种图进行比較。首先看一下SVN等其它版本号控制系统的原理图。例如以下所看到的:

在上述图片中,横向表示各个版本号,纵向表示各个文件和其差异。在version1中,存在三个文件各自是fileA、fileB、fileC;在version2中,fileA、fileC发生变化1,那么我们就变化1进行记录;在version3中,fileC发生了变化2,那么我们就将变化2进行记录;以此类推。

Git原理分析

接下来。我们再来看一下Git原理图。例如以下所看到的:

在上述图片中,横向表示各个版本号,纵向表示各个快照(所谓快照。即其所表示文件的一个副本或一个复制品)。在version1中,存在三个快照各自是A、B、C;在version2中,A、C发生了变化。那么我们就对A、C做一个快照A1、C1。而B没有不论什么变化,那么就不再做快照而仅仅是做一个上次的快照做一个链接B;以此类推。



        通过上述分析。我们能够得出SVN等其它版本号控制系统关心的是每个文件变化的内容。即側重于细节内容。而Git则很多其它的关心每个文件总体的变化,即側重于总体。这就是Git与其它版本号控制系统的主要差别。



        简单的讲,Git本身仅仅是一个版本号控制工具,使用Git并没有多少难度,假设您之前使用过类似的版本号控制工具,那么完毕一些日常性的操作,应该说是很easy的,但Git本身另一些与其它版本号控制工具所不同的内容。这就须要我们对Git的思想和工具原理做一个简单的了解了。

接下来我们继续解说Git的其它内容,敬请期待!

Git实战(二)原理的更多相关文章

  1. 代码管理工具 --- git的学习笔记二《git的工作原理》

    通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...

  2. git实战-linux定时监控github更新状态(二)

    系列文章 git介绍-常用操作(一)✓ git实战-linux定时监控github更新状态(二)✓ 本文主要内容 如何查看github的本地仓库和远程仓库的同步情况 linux服务器定时监控githu ...

  3. Git详解之一 Git实战

    Git详解之一 Git实战 入门 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章 ...

  4. xgboost入门与实战(原理篇)

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  5. Spring Boot 实战与原理分析视频课程

    Spring Boot 实战与原理分析视频课程 链接:https://pan.baidu.com/share/init?surl=PeykcoeqZtd1d9lN9V_F-A 提取码: 关注公众号[G ...

  6. Netty 仿QQ聊天室 (实战二)

    Netty 聊天器(百万级流量实战二):仿QQ客户端 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之15 [博客园 总入口 ] 源码IDEA工程获取链接:Java 聊天室 实战 源码 写在 ...

  7. Git实战

    Git实战 1.Git特点 1.1.Git两大特点 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题. 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器 ...

  8. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  9. Gulp实战和原理解析

    Gulp实战和原理解析(以weui作为项目实例)http://i5ting.github.io/stuq-gulp/

随机推荐

  1. .NET MVC中登陆授权过滤器的使用

    1.写个类LoginAuthorityAttribute,继承自AuthorizeAttribute using System; using System.Collections.Generic; u ...

  2. ACID、Data Replication、CAP与BASE

    ACID 在传数据库系统中,事务具有ACID 4个属性. (1) 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行. (2) 一致性(Consiste ...

  3. 使用C语言操作InfluxDB

    环境: CentOS6.5_x64 InfluxDB版本:1.1.0 InfluxDB官网暂未提供C语言开发库,但github提供的有: https://github.com/influxdata/i ...

  4. unity3d uv动画

    做个总结吧.算是. 之前做过一个项目,是一个关于太空大战的项目. 算是自己做的吧.大体环境是unity3d + win32,mac上不行.好像不支持这个,原因未知.希望知道的告诉我下. 以下具体说下整 ...

  5. C# 代码实现设置用户"NETWORK SERVICE"具有对文件夹的读取权限。

    设置用户"NETWORK SERVICE"具有对文件夹的读取权限. 原帖地址: http://www.cnblogs.com/sjhrun2001/archive/2009/03/ ...

  6. 【树莓派+.NET MF打造视频监控智能车】遥控篇

    树莓派是最近比较火热的开源硬件,其设备只有信用卡大小,运行着Linux系统,专为学生编程教育而设计.我十多年的技术路线基本以学习微软的技术为主,中间也曾试图学习过linux,但是相对陡峭的学习曲线,只 ...

  7. 用Redis的zset防御Session Flood

    zset (Sorted Set)是set的升级版本, 在set的基础上增加了一个顺序(或者权重)值属性, 属性在添加修改元素时候可以指定. 每次指定后zset会自动重新按新的值调整顺序. 可以理解为 ...

  8. Ubuntu下的init.d管理update-rc.d

    计算机在启动的时候会自动执行一些脚本,用于启动一些应用程序服务,update-rc.d 是管理这些脚本的常用命令之一. 首先这是 LinuxQuestions 中对 update-rc.d 的定义: ...

  9. input文本框在div中居中

    {display:block;margin-left:auto;margin-right:auto;}

  10. ios中地图定位

    #import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface ViewController ...