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许可证

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • GIT分布式版本控制系统最佳实践 这篇文章来自于老男孩教育高级架构师班12期的徐亮偉同学。 首先感谢老男孩架构师班...
    meng_philip123阅读 3,394评论 4 36
  • 有梦想是一件很幸福的事情,那是一种辽远的希望,看起来渺茫又熠熠发光。不拒绝,不负责,不承诺。永远不会让你失望,永远...
    有聊星人_几人归阅读 504评论 0 0
  • 我心安如初。 -----她给自己撑起了一片天,给她的儿女们撑起了一个家,给我撑起了一个世界。 我啊,有一个很平凡又...
    纪晓阅读 557评论 0 0
  • 近期宝平心静气坐下来,认认真真思考总结了几个可以拒绝拖延,帮助实现目标的方法。 这个方法就是:赶紧行动,行动,...
    付琴猫小鱼阅读 658评论 5 6
  • 小灵是怕惯了雨哥的。 从她嫁过来第三天,雨哥就开始打她。宿醉头疼了打她,天气燥热难耐打她,饭菜不合...
    TZXJ阅读 284评论 0 0