Git 教程

Git 读音为[gɪt]是一个免费、开源、易学习、体积小、性能卓越的分布式版本控制系统。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。小大项目皆可用


Git 的诞生背景

上个世纪的1991年,Linus开发出了开源的Linux系统,当时全球大量热心程序员为Linux写代码,由于Linus看不上当时的cvs和svn这些速度慢且还要联网集中式的版本管理系统,因此最初这些热心程序员都是通过diff的方式把源代,码文件发送给Linus,最后由Linus手动将代码合并起来。当然这样的合并过程非常的复杂繁琐。

到了2002年,代码实在太多了,终于Linus也撑不下去了。万般无奈之下找了一个商业的版本控制系统BitKeeper,但是BitKeeper的老板还是有点魄力的,直接授权Linux免费使用他们的系统。但是好景不长,在2005年,Linux社区里的一位大牛,开发Samba的Andrew试图去破解BitKeeper的协议,其实不止他一个人这么干过,结果就是被BitKeeper公司发现了,结果可想而知。在此期间,Linus其实是可以挽回的,但是可能由于Linus江湖气息很重,一直没有道歉。

更加出人意料的事情就来了,Linus随后花了两周的时间用C写了一个分布式版本控制系统,它就是Git。一个月之内,Linux的代码就交给了Git来管理!(跟当初写linux一样,不让用我就自己写一个出来),尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移到GitHub,包括jQuery,PHP,Ruby等等。

Git 与 SVN 区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。

Git 与 SVN 区别点:

  • 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  • 3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  • 4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  • 5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。