Git 简介(上):版本控制 与 Git 的崛起

兄弟篇:Git 简介(下):基本命令介绍与简单教程

Git 是一个自由的、非常优秀且流行的版本控制系统。本文主要简单介绍一下 Git 的一些基本常识,包括什么是版本控制、Git 的历史、原理等和一些常用的 Git 命令。

本文有许多内容来自维基百科相关话题页。

什么是版本控制系统


通过文档控制,记录工程项目的每个模块的改动历程,并为每次改动编上序号。

上面的描述太学术,举个更容易理解的例子:我创建了一个项目,文件A、B、C等,命名为版本 “1”。经过测试发现有个bug,修改之后版本改为 “2”。后来经过若干次修改到了版本 “n”,我又加了些代码,提交过后版本改为 “n+1”,结果发现刚提交的代码很糟糕,需要推掉重来,我可以回退到版本 “n”,甚至之前的任意版本重新来过。

版本控制就是提供项目的设计者,将设计恢复到之前任一状态的选择权,这种选择权在设计过程无法进行下去时特别重要。


应用了版本控制的项目-图片来自维基百科

版本控制系统分为 集中式 和 分布式


** 集中式版本控制系统 **,又称主从式版本控制系统。这类系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。


集中式版本控制系统图解
集中式版本控制系统图解

** 分布式版本控制系统 **也有一个“中央服务器”,但每个人的电脑上都是一个完整的版本库,中央服务器的作用仅仅是方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。这样,你工作的时候即使不联网也可以,因为版本库就在你自己的电脑上。当多个人协作时,只需把各自的修改推送给对方,就可以互相看到对方的修改了。


分布式版本控制系统图解

分布式版本控制系统在安全性、功能性、便捷性等方面比集中式要更加好一些。

Git


Git 是一个分布式版本控制系统,由 Linux 开源社区开发,最初的设计目的是为了方便管理 Linux 内核的开发。

自2002年开始,林纳斯·托瓦兹决定使用 BitKeeper 作为 Linux 内核主要的版本控制系统用以维护代码,并获得 BitMover 公司授权的对 BitKeeper 的免费使用权。因为 BitKeeper 为非自由软件,这个决定在崇尚自由软件精神的 Linux 开源社区中长期遭受质疑。在 Linux 社区中,特别是理查德·斯托曼自由软件基金会的成员,主张应该使用开放源代码的软件来作为 Linux 核心的版本控制系统。林纳斯·托瓦兹曾考虑过采用现成软件作为版本控制系统(例如 Monotone),但这些软件都存在一些问题,特别是性能不佳。现成的方案,如 CVS 的架构,受到林纳斯·托瓦兹的批评。

2005年,安德鲁·垂鸠写了一个简单程序,可以连接 BitKeeper 的存储库,BitKeeper 著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对 BitKeeper 内部使用的协议进行逆向工程,决定收回无偿使用 BitKeeper 的授权。Linux 内核开发团队与 BitMover 公司进行蹉商,但无法解决他们之间的歧见。林纳斯·托瓦兹决定自行开发版本控制系统替代 BitKeeper,以十天的时间,编写出第一个git版本,于2005年以 GPL 协议发布。

Git 在设计之初就制订了若干目标:速度 、 简单的设计 、 对非线性开发模式的强力支持(允许上千个并行开发的分支)、完全分布式、有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)。Git 和其他版本控制系统(如 CVS)有不少的差别,Git 本身关心文件的整体性是否有改变,但多数的 CVS 或 Subversion 系统则在乎文件内容的差异。因此 Git 更像一个文件系统,直接在本机上获取数据,不必连接到主机端获取数据。自诞生于 2005 年以来,Git 日臻成熟完善,迅速成为最流行的分布式版本控制系统,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

Linus Torvalds 大神

历史就是这么偶然,如果不是当年 BitMover 公司与 Linux 社区的撕逼,可能现在我们就没有免费而超级好用的 Git 了。

兄弟篇:Git 简介(下):基本命令介绍与简单教程

版权声明 自由转载 - 保持署名 - 不可商用 - 不可演绎 (CC3.0 创意共享3.0许可证

推荐阅读更多精彩内容

  • 有梦想是一件很幸福的事情,那是一种辽远的希望,看起来渺茫又熠熠发光。不拒绝,不负责,不承诺。永远不会让你失望,永远...
    有聊星人_几人归阅读 192评论 0 0
  • 近期宝平心静气坐下来,认认真真思考总结了几个可以拒绝拖延,帮助实现目标的方法。 这个方法就是:赶紧行动,行动,...
    付琴猫小鱼阅读 424评论 5 6
  • 随着我们生活中电器越来越多,开关插座成为了我们生活中的必需品。但是开关插座十大品牌却是我们应该要了解的,使用好的开...
    hon零几阅读 556评论 1 1
  • 小灵是怕惯了雨哥的。 从她嫁过来第三天,雨哥就开始打她。宿醉头疼了打她,天气燥热难耐打她,饭菜不合...
    TZXJ阅读 127评论 0 0