Git

Git是一个分布式版本控制系统。 最初由[[林纳斯·托瓦兹]]创作,于2005年以[[GPL]]发布。最初的目的是为了更好的管理Linux内核开发而设计。

历史

因为随着Linux内核代码越来越多,为了方便管理各版本的代码。自2002年开始,林纳斯·托瓦兹决定使用Bitkeeper作为Linux内核主要的版本控制系统用以维护代码。但因为Bitkeeper为专有软件,导致在Linux社区中受到质疑。大部分Linux社区人员认为应该使用开放源代码的软件来作为Linux内核的版本控制系统。虽然林纳斯·托瓦兹也曾考虑过采用现成的软件做为版本控制系统(例如Monotone),但这些软件都存在一些问题,特别是性能不佳。 2005年,安德鲁·垂鸠写了一个简单程序,可以连接Bitkeeper的存储库。BitKeeper著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对BitKeeper内部使用的协议进行了逆向工程。决定收回给Linux社区无偿使用BitKeeper的许可。Linux内核开发团队与BitMover公司进行磋商,但无法解决他们之间的岐见。林纳斯·托瓦兹决定自行开发版本控制系统替代BitKeeper,以十一原时间编写出了git第一个版本。

主要功能

git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式式版本控制工具不同,它采用了分布式版本的作法,不需要服务器软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。git最为出色的是它的合并追踪(merge tracing)能力。

作为[[开源]]自由原教旨主义项目,git没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制。

实现原理

git和其它版本控制系统有不小的差别,git本身不关心文件的整体性是否有改变,但多数的版本控制系统如CVS或Subversion系统则在乎文件内容的差异。git拒绝保持每个文件的版本修订关系。因此查看一个文件的历史需要遍历各个history快照;git隐式处理文件更名,即同名文件默认为其前身,如果没有同名文件则在前一个版本中搜索具有类似内容的文件。 git更像是一个文件系统,直接在本机上获取资料,不必连接到主机端进行获取。每个开发者都可有全部开发历史的本地副本,changes从这种本地repository复制给其他开发者。这些changes作为新增的开发分支被导入,可以与本地开发分支合并。 分支是非常轻量级的,一个分支仅是对一个commit的引用。 git用C语言开发,以追求最高的性能。git自动完成垃圾回收,也可以用命令git gc --prune直接调用。

使用

[[Git常用操作]] [[Git错误解决]]

最后更新于