上次的博文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. bash和shell的关系

    bash是borne again shell的缩写,它是shell的一种,Linux上默认采用的是bash. shell脚本中的方法带不带function的区别,例如: function foo () ...

  2. JMX入门开发

    什么是JMX?或者是JMX是做什么的?我的理解是:可以远程管理/编辑JAVA对象.如图: 上面的SchemaName属性就是可以动态修改的,那么是如何做到的哪?下面咱们逐步分析. 一.首先假设咱们有个 ...

  3. Java生成XML文件与XML文件的写入

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6651643.html  既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了. 与解析X ...

  4. 如何使用 MSBuild.exe 生成解决方案中的特定目标

    以前都是直接使用VS或者msbuild生成整个解决方案,或者只构建单个工程. 这回使用msbuild构建单个工程的时候出现了问题,因为工程中使用了SolutionDir这个宏来定位第三方库路径. 对于 ...

  5. 转 php 5.3.6中php-fpm 配置

    php 5.3.6 中 php-fpm 配置 成 服务启动 从php5.3.3开始 源码中开始包含 php-fpm,不用专门再打补丁了,只需要解开源码直接configure, 关于php-fpm的编译 ...

  6. tomcat,很多时候,可以在服务server.xml中可以实现一些效果

    一.--日志 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="log ...

  7. 生命周期方法调用,以及在onStop()方法中处理草稿信息

    生命周期方法调用顺序 1. 从会话列表界面跳转到信息列表界面. 07-17 17:29:18.718: I/txrjsms(19370): MessageListActivity.onCreate 0 ...

  8. 【转】【MySQL】MySQL的双机互信实战

    [转]https://www.cnblogs.com/mchina/archive/2013/03/15/2956017.html MySQL双机实战原理:利用ssh传输文件,通过公.私钥的共享,实现 ...

  9. ios中二维码的用法

    网上的例子 zbar 下载地址 http://pan.baidu.com/share/link?shareid=2652605686&uk=9237761871.新建一个工程A:view-ba ...

  10. samba config

    [global] netbios name = HARDY     #设置服务器的netbios名字 server string = my server #对samba服务器的描述 workgroup ...