Linux之父Linus是坚定的CVS反对者,他也同样地反对SVN。这就是为什么在1991~2002这十余年间,Linus宁可以手工修补文件的方式维护代码,也迟迟不愿使用CVS的原因。
2002年至2005年,Linus顶着开源社区精英们口诛笔伐的压力,选择了一个商业版本控制系统BitKeeper作为Linux内核的代码管理工具。BitKeeper不同于CVS和SVN等集中式版本控制工具,而是一款分布式版本控制工具。
分布式版本控制系统最大的反传统之处在于,可以不需要集中式的版本库,每个人都工作在通过克隆建立的本地版本库中。也就是说每个人都拥有一个完整的版本库,查看提交日志,提交,创建里程碑和分支,合并分支,回退等所有操作都直接在本地完成而不需要网络连接。每个人都是本地版本库的主人,不再有谁能提交谁不能提交的限制,加上多样的协同工作模型(版本库间推送,拉回,以及补丁文件传送等)让开源项目的参与度有爆发式增长。
2005年发生的一件事最终导致Git的诞生。在2005年4月,Andrew Tridgell(即大名鼎鼎的Samba的作者)试图对BitKeeper进行反向工程,以开发一个能与BitKeeper交互的开源工具。这激怒了BitKeeper软件的所有者BitKeeper公司,要求收回对Linux社区免费使用BitKeeper的授权。迫不得已,Linus选择了自己开发一个分布式版本控制工具以替代BitKeeper。
Linus以一个文件系统专家和内核设计者的视角对Git进行了设计,其独特的设计让Git拥有非凡的性能和最为优化的存储能力。完成原型设计后,在2005年7月26日,Linus功成身退,将Git的维护交给另外一个Git的主要贡献者junio C Hamano,直到现在。
Git虽然是在Linux下开发的,但现在已经可以跨平台运行在所有主流的操作系统上,包括:linux,Mac OS和Windows等。