几乎所有的版本控制工具都是出于同样的目的:开发以及维护开发出来的代码,方便读取代码的历史,记录所有的修改。这里,介绍的是当前在开源社区内非常流行的版本控制工具Git。它是由Linus Torvalds发明的,最初是为了方便管理linux内核的开发工作。

Git的诞生:

通常来说,当工具跟不上项目需求时,开发人员就会开发一个新的工具来替代它。大部分工具在发明之前,都会已经存在一些类似的工具,新工具则是在原有工具的思想上进行了更加合理的修改。那么在Git之前,有哪些版本控制工具呢?它们都有哪些特点呢?

1、源代码控制系统SCCS:

这是有证可查的可以运行在UNIX上最早的VCS,它提供了一个数据存储中心作为版本库,提供了一个简单的锁模型。该锁模型需要锁定-检出-解锁,是一个串行修改的版本控制系统。

2、修订控制系统RCS:

引入了双向差异的概念,来提高文件不同版本的存储效率。

3、并行版本系统CVS:

1986年由Dick Grune设计并实现,新概念包括分布式开发、提出一个关于锁的新范式。CVS给予每个开发人员对于自己私有版本写的权限,不同开发人员的改动可以自动合并。当两个开发人员试图修改同一行时,会提示冲突,并要求手动修改。

4、SVN:

提出了以原子方式提交改动部分。

5、BitKeeper和Mercurial:

淘汰了中心版本库的概念,数据的存储变成分布式的,每个开发人员都拥有自己刻共享的版本库副本。

6、Mercurial和Monotone:

首创了用散列指纹来唯一标识文件的内容。

Git在设计之初,或多或少的借鉴了上述几个版本控制工具的想法。

Git的特性:

1、有助于分布式开发:

它允许并行开发,不需要与一个中心版本库时刻同步,允许许多开发人员在不同的地方,甚至是离线的情况下,无障碍的开发。个人认为这个特点正是SVN所欠缺的。

2、能够胜任上千开发人员的规模:

3、性能优异。

4、保持完整性和可靠性:

Git使用了安全散列函数SHA1来命名和识别数据库中的对象。

5、强化责任:

Git对每一个有文件改动的提交强制使用改动日志,定位谁改动了文件,以及改动的原因。

6、不可变性:

Git版本库中存储的数据对象均为不可变的。

7、原子事务:

让一系列不同诞生相关的操作要么全部执行,要么全部失败,确保版本数据库不会陷入部分改变或者破损的状态。

8、支持并鼓励基于分支的开发。

9、完整的版本库:

可以让每个开发人员不需要查询中心服务器就可以得到历史修订信息。

Git版本控制管理学习笔记1-介绍的更多相关文章

  1. Git版本控制管理学习笔记3-基本的Git概念

    为了更近一步的学习和理解Git的理念,这一节介绍一下Git中的一些基本概念. 基本概念 对象库图示 Git在工作时的概念 一.基本概念: 1.版本库:     Git的版本库就是一个简单的数据库,其中 ...

  2. Git版本控制管理学习笔记5-提交

        这个标题其实有些让人费解,因为会想这个提交是动词还是名称?     提交动作是通过git commit命令来实现的,提交之后会在对象库中新增一个提交对象.提交过程中会发生哪些变化,在上一篇笔记 ...

  3. Git版本控制管理学习笔记4-文件管理和索引

        可以认为使用Git时,我们会遇到3个空间:工作目录.索引.版本库.我们关心的,就是在新建.修改等操作时,这三者之间发生了怎样的变化.     笼统的讲,就是在工作目录下编辑,在索引中积累修改, ...

  4. Git版本控制管理学习笔记2--起步

    首先确保系统中已经安装了git,这里使用的linux系统. 一.命令行初步使用: 1.git命令: 列出它的选项和最常用的子命令.标准命令格式中,COMMAND代表的就是下面列出的子命令. [root ...

  5. Git 版本控制工具(学习笔记)

    GIT(分布式) 一.Git 初始版本控制工具 1. 安装Git Ubuntu系统下,打开shell界面,输入: sudo apt-get install git-core  之后回车输入密码,即可完 ...

  6. Git版本控制管理教程(一):介绍

    我的个人博客地址:damienzhong.com 原文链接:点击打开链接 1.1 背景 数据是短暂的,且容易丢失的,特别是作为开发人员的我们每天频繁的对项目代码进行更新,容易产生错误代码的变更或者项目 ...

  7. C++内存管理学习笔记(5)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  8. C++内存管理学习笔记(7)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  9. ASP.NET Core Web开发学习笔记-1介绍篇

    ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...

随机推荐

  1. 红米3 SudaMod(android_6.01_r72)高配指纹/农历/归属地/SM天气/流畅运行/红外线正常/更新于20161025

    一.写在前面 我只是个人爱好,本ROM未集成任何第三方推广软件,我只是喜欢把好的资源分享出来,若可以,我们一起学习,一起进步. 请不要问我怎么刷机! 请不要问我玩游戏卡不卡(有钱你就换好点的手机)! ...

  2. <<< sqlserver、Mysql、Oracle数据库优缺点

    sqlserver 优点: 易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:   为数据管理与分析带来了灵活性,允许单位在快速变化的 ...

  3. photoshop拾色器如何恢复默认?

    今天在做设计图的时候,遇到一个问题,当时就把我给整蒙了. 问题是这样的,ps的调色器变成了这样,如下: 本来应该是这样: 可能有人已经看出两张图的不同之处了. 但是我当时忙的不得了,恩是不知道哪里除了 ...

  4. C# 调用C++ SDK/API的问题总结

    1.回调函数的使用 c++的回调函数如下所示: typedef void (CALLBACK *Data)(long lHandle, DATA_TYPE eDataType, unsigned ch ...

  5. 【转】JavaWeb MVC

    -------------------------------------------------------------------------------------------------- 1 ...

  6. XMPP开发环境配置

    首先配置XMPP开发环境配置需要的软件 先安装xampp-osx-1.8.3-5-installer.dmg 安装成功后launchpad里会多出一个XAMPP(其他),点开里面的manager-os ...

  7. 14个技巧助你适配 iOS10

    1.Notification(通知) 自从 Notification 被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到 Us ...

  8. ANT的安装

    1.下载ANT http://ant.apache.org/bindownload.cgi 2.将下载下来的压缩包解压到任意文件夹下,例如D盘根目录下D:/apache-ant-1.9.2 3.添加环 ...

  9. mysql数据库 中文乱码

    看到一篇很好的文章,转录于此 中文乱码似乎是程序编写中永恒的一个话题和难点,就比如MySQL存取中文乱码,但我想做任何事情,都要有个思路才行,有了思路才知道如何去解决问题,否则,即使一时解决了问题,但 ...

  10. 示例开发过程记录:meteor,react,apollo

    本示例记录一个开发过程: 1)参考 Meteor React TUTORIAL教程 https://www.meteor.com/tutorials/react/creating-an-app 2). ...