文章目录
  1. 1. 版本控制
  2. 2. 特性
  3. 3. 和SVN的区别

Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。Git最初被Linus Torvalds开发出来用于管理Linux内核的开发。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖 于网络和中心服务器。

版本控制

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制发展过程:

本地版本控制系统->集中化的版本控制系统(取出最新版本,不是所有信息)->分布式版本控制系统(代码库完整备份)

特性

  1. 直接记录快照,而非差异比较

    Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。

    Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接

  2. 近乎所有操作都是本地执行

    在 Git 中的绝大多数操作都只需要访问本地文件和资源,不用连网。

  3. 时刻保持数据完整性

    在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。换句话说,不可能在你修改了文件或目录之后,Git 一无所知。

  4. 多数操作仅添加数据

    常用的 Git 操作大多仅仅是把数据添加到数据库。因为任何一种不可逆的操作,比如删除数据,都会使回退或重现历史版本变得困难重重。在别的 VCS 中,若还未提交更新,就有可能丢失或者混淆一些修改的内容,但在 Git 里,一旦提交快照之后就完全不用担心丢失数据,特别是养成定期推送到其他仓库的习惯的话。

  5. 文件的三种状态

    对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

    基本的 Git 工作流程如下:

    在工作目录中修改某些文件。
    对修改后的文件进行快照,然后保存到暂存区域。
    提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中
    

和SVN的区别

  1. GIT是分布式的,SVN不是
  2. GIT把内容按元数据方式存储,而SVN是按文件

    所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的 体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分 支,版本记录等。

  3. GIT分支和SVN的分支不同

    分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。

    处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。

  4. GIT没有一个全局的版本号,而SVN有
  5. GIT的内容完整性要优于SVN
文章目录
  1. 1. 版本控制
  2. 2. 特性
  3. 3. 和SVN的区别