Git 之前,版本控制和代码管理是 CVS 和 SVN 的天下,那时候我们觉得这个领域也就那样了,还能玩出什么花样呢?结果我们忽略了 Linus 这个神仙一般的人物。
2002 年,Linux 内核开发团队开始采用 BitKepper 作为代码版本管理工具。BitKeeper 是一套分布式的版本管理工具,它满足了 Linux 内核开发的技术需求。但是 BitKeeper 只是暂时对 Linux 等开源软件团队免费,并不是自由软件。2005年 BitMover 公司不再免费赞助 Linux 开发团队。对此李纳斯表示非常遗憾,但遗憾之后他并没有自怨自艾,而是愤怒的与其他几个小伙伴花了几个星期完成了一套新的分布式代码管理工具,命名为 Git。两个月之后,Git 发布了官方版本,并在不同的项目中开始应用,自由软件社区给予了 Git 广泛的支持。
与 SVN 和 CVS 等软件不同的是,Git 更关注文件的整体性是否有改变,Git 更像一个文件系统,它允许开发者在本地获取各种数据,而不是随时都需要连接服务器。Git 的最大的特点就是离线分布式代码管理,速度飞快,适合管理大型项目,难以置信的非线性分支管理。
如果看到这里你发现自己的公司还在用 CSV 或 SVN,那你可能还活在上个编程时代里。
2005 年 Git 发布之后,技术日臻成熟,很多大公司都开始采用 Git 管理自己的项目代码,对于 Git 的成功,李纳斯表示:
Git的设计其实很简单,它有一个稳定而合理的数据结构。事实上,我强烈建议围绕着数据来设计代码,而不是反其道而行之,我觉得这可能就是 Git 如此成功的原因。
坏程序员总是担心他们的代码,而优秀的程序员则会担心数据结构和它们之间的关系。
在 Git 的基础之上,很快催生出了 GitHub 和 GitLab 这两个当前最流行的代码托管平台。 2008 年 2 月 Github (xihefangpeicom)公司基于 Git 构建了协作式源代码托管网站 GitHub,目前该网站是这个星球上最大的源代码集散地,几乎所有的优秀代码都托管在 Github 上。
GitLab 则是另一个基于 Git 构建的可以自由部署在本地的代码管理工具,提供代码评审、项目管理以及CI/CD等功能。极客时间目前就在基于 GitLab 进行代码管理、Code Review 和自动化集成。
熟练掌握 Git 是程序员的必备技能,Git 也是日常工作中最常用、最有效率的工具,可是很多人会疑问,Git 不就那几个简单的命令吗?有什么难的?还真不是这样,Git 以及 GitHub、GitLab 这些工具虽然上手容易,但要真正在平时的项目协作中用好,还真不像你想的那么简单。
不妨看看你是否经常遇到这样的问题?
1、怎么又报 detached HEAD 了,什么意思啊? 2、push 不上去了,提示什么 non fast-forwards,这个是什么鬼东西? 3、我想把正在开发的这个项目开源到 GitHub 上去,怎们做可以同时 push 到公司的代码平台和 GitHub 呢? 4、rebase 太难用了,我们还是用 merge 好了。 5、不会是谁把 master 分支变更历史了吧?怎么 pull —rebase 的时候,有这么多个commit要 rebase?简直要疯了。 6、GitLab 上怎么做 code review?
这些问题的原因可归纳为四类:
第一、没有吃透 Git 的核心概念和其背后的工作原理; 第二、不会使用部分不常见但却非常有效的 Git 命令; 第三、对于分支管理不熟练,比如集成分支没有禁用某些功能,导致问题频发,协作效率低下; 第四、没有发挥出 GitHub、GitLab 这些协作平台的最大功能,虽然表面上是在使用,但其实根本没有掌握到它们的精髓。 www.xihefangpei.com