GIT (分布式版本控制系统)

【简介】

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Torvalds
开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux
内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds
决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux
内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。

【与其他工具的区别】

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

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

这是 Git 同其他系统的重要区别。它完全颠覆了传统版本控制的套路,并对各个环节的实现方式作了新的设计。Git 更像是个小型的文件系统,但它同时还提供了许多以此为基础的超强工具,而不只是一个简单的 VCS。

【原理及优点】

在 Git 中的绝大多数操作都只需要访问本地文件和资源,不用连网。但如果用 CVCS 的话,差不多所有操作都需要连接网络。因为 Git 在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快。


个例子,如果要浏览项目的历史更新摘要,Git
不用跑到外面的服务器上去取数据回来,而直接从本地数据库读取后展示给你看。所以任何时候你都可以马上翻阅,无需等待。如果想要看当前版本的文件和一个月
前的版本之间有何差异,Git
会取出一个月前的快照和当前文件作一次差异运算,而不用请求远程服务器来做这件事,或是把老版本的文件拉到本地来作比较。


CVCS 的话,没有网络或者断开 VPN 你就无法做任何事情。但用 Git
的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,等到了有网络的时候再上传到远程仓库。同样,在回家的路上,不用连接 VPN
你也可以继续工作。换作其他版本控制系统,这么做几乎不可能,抑或非常麻烦。比如
Perforce,如果不连到服务器,几乎什么都做不了(译注:默认无法发出命令p4 edit file 开始编辑文件,因
为 Perforce 需要联网通知系统声明该文件正在被谁修订。但实际上手工修改文件权限可以绕过这个限制,只是完成后还是无法提交更新。);如果是
Subversion 或
CVS,虽然可以编辑文件,但无法提交更新,因为数据库在网络上。看上去好像这些都不是什么大问题,但实际体验过之后,你就会惊喜地发现,这其实是会带来
很大不同的。

优点一:

时刻保证完整性:


保存到 Git
之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。换句话说,不可能在你修改了文件或目录之后,Git
一无所知。这项特性作为 Git 的设计哲学,建在整体架构的最底层。所以如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git
都能立即察觉。

Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个 SHA-1 哈希值,作为指纹字符串。该字串由 40 个十六进制字符(0-9 及 a-f)组成,看起来就像是:

abb9da655225rety783b52f8696cd6d3dchu87

Git 的工作完全依赖于这类指纹字串,所以你会经常看到这样的哈希值。实际上,所有保存在 Git 数据库中的东西都是用此哈希值来作索引的,而不是靠文件名。

优点二:

多数操作仅添加数据:


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

【小结】

SVN是一个版本控制系统,它只提供一种

式做这些,每个人都使用相同的方法。就是这样。这使得你将代码从SVN迁移到其它集中式管理的VCS或从其它集中式管理的VCS迁进来变得很容易。Git

并不仅仅是一个版本控制系统——它实际上是一个文件系统,它里面有很多的拓扑学知识来支持你如何在不同的环境中架设代码仓库——并且没有一个统一的标准。
选择一个合适的拓扑结构就成了难题

时间: 2025-01-07 10:11:14

GIT (分布式版本控制系统)的相关文章

手把手教你玩转Git分布式版本控制系统!

目录  Git诞生历史  Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具   1  Git诞生历史   我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux技术爱好者的贡献,志愿者们通过邮件向Linus发送着自己编写的源代码文件,然后由Linus本人通过

分布式版本控制系统入门:学习和对比Bazaar、Mercurial和Git的使用方法

简介:您是否对分布式版本控制感兴趣,但是又被一大堆行话弄糊涂了?本文介绍三种主要的系统 (Git.Mercurial 和 Bazaar),讨论采用分布式工作流的一些优点,比较分布式版本控制的常用操作. 简介 在过去几年,对于分布式版本控制可以给开发过程提供的益处有许多争论.最近,分布式 工具已经很成熟了.尽管分布式工具的一些优点最初可能不明显,但是从长期来看,它们提供的灵活性是 非常有意义的.阅读完本文之后,您应该能够开始使用分布式版本控制系统,基本了解分布式模型能够提 供的优点. 围绕分布式版

Bazaar VCS 2.4.1发布 分布式版本控制系统

Bazaar是一个简单的分布式http://www.aliyun.com/zixun/aggregation/9591.html">版本控制系统.它使用户能够分支远程软件库到本地的上下文,用户可以从他们的分支中提交本地分支,而无需特别许可.可用于Windows.GNU/Linux.UNIX 以及 Mac OS 系统. Bazaar VCS 2.4.1版本这是一个修正错误的版本,建议早期2.4版本的所有用户升级. 软件信息:http://bazaar.canonical.com/en/ 下载

Emacs 将用 Git 作为版本控制系统

Eric S. Raymond今年一月提议将Emacs的版本控制系统从Bazaar(bzr)迁移到Git,理由是bzr已死.Bazaar版本控制系统由Canonical公司雇员开发,但如今Canonical自己的内部项目也都迁移到了Git.经过几个月的商讨之后,迁移正式从11月11日启动,Emacs将改用Git作为版本控制系统.Git是非常受欢迎的版本控制系统,理论上讲它有可能帮助Emacs项目吸引到新的开发者. 文章转载自 开源中国社区 [http://www.oschina.net]

[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】

转自:http://www.cnblogs.com/yubinfeng/p/5182271.html 前面介绍了两款代码管理工具VSS和SVN,这两种管理工具在很长一段时间曾为我们的代码管理提供了便利,本篇介绍一款思维方式完全不同(也可以说不合常理)的版本控制系统--Git.可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系.Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)

Bazaar VCS v2.4b2测试版发布 分布式版本控制系统

Bazaar是一个分布式的http://www.aliyun.com/zixun/aggregation/9591.html">版本控制系统,它发布在 GPL 许可协议之下,并可用于 Windows.GNU/Linux.UNIX 以及 Mac OS 系统.Bazaar 由 Canonical 公司赞助,目前已服务于 Samba.Drupal 等知名的开源项目. 可帮助您随时跟踪项目的历史,并与他人合作很容易. .无论你是一个开发人员,合作型团队或分散在世界各地17802.html"

Bazaar VCS 2.3.4发布 分布式版本控制系统

Bazaar VCS 2.3.4这是一个修正错误的版本.建议2.3之前版本的所有用户进行升级. Bazaar 是一个分布式的http://www.aliyun.com/zixun/aggregation/9591.html">版本控制系统,它发布在 GPL 许可协议之下,并可用于 Windows.GNU/Linux.UNIX 以及 Mac OS 系统.Bazaar 由 Canonical 公司赞助,目前已服务于Samba.Drupal等知名的开源项目. Bazaar 当前已经包含许多有用的

Git for Windows 2.13.1(2) 发布,分布式版本控制系统

Git for Windows 2.13.1(2) 已发布,这是一个针对 2.13.1 的补充版本: git commit 和 git status 不再随机抛出分段错误. 详情和下载地址可查看发行主页 Git for Windows 2.13.1 带来了许多新特性: 集成 Git v2.13.1. 集成 Git Credential Manager v1.10.0. 集成 OpenSSH 7.5p1. 集成 Git Flow v1.11.0. 集成 Git LFS v2.1.1. Git 现在

分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经非常详细了,但是.咳咳,太长了,我就稍微简单点的来概括,其实Git在MAC和Ubuntu上的体验是最好的,不过搞Android开发的我相信绝大多数人还是用windows吧,当然不排除个例 廖雪峰教程:http://www.liaoxuefeng.com/wiki/001373951630592960