Git 入门教程
2008-06-21 01:20
考虑到 CVS 的一些局限性,最近和同事在公司推行 Git。
其实,如果推行 SVN 的化,可能推行的难度会降低很多。不过 lark 说既然推行一个新的
版本管理工具,总要花费一定的时间进行培训、部署、转换。而推行 Git 和 SVN 的代价不如
想象中差距那么大。因此,不如就多花些精力推行 Git , 可以带来更多的好处。 这个想法
说服了我。 然后就开始筹备了。 我发现网上很多 git 教程对一些基础命令(比如 git-reset)
的介绍还是不够清楚。另外,介绍 git1.5 的少,介绍 git1.4 的多。此外,对于如何基于 Git 合
作开发,介绍的内容也是少之又少。因此,决定写一份教程,以减少在公司推广 Git 的培训
代价。
其实我也是一个 Git 的新手。 写这份教程也是我自己学习和摸索 git 的过程,其中基于 Git
进行合作开发的模式参考了 CVS,应该是很初级的合作模式。但是当前自己也只能做到这一
步了。 教程所述都是自己通过试验验证的。至少可以满足公司基本的合作开发。教程写完
后,谢欣说可以放到 blog 与大家共享。我觉得是个不错的主意。一方面我觉得这个文档应
该可以给 git 的新手一些帮助,另一方面也欢迎 git 的大牛指点。 这里要感谢《Git 中文教
程》的作者。还有概述中关于 git 的优点描述拷贝了网络上某位大牛的原话,但是拷贝的出
处也是转载的,就在这里谢谢那位我不知名大牛了。
下面就开始了。
1. 概述
对于软件版本管理工具,酷讯决定摒弃 CVS 而转向 Git 了。
为什么要选择 Git? 你真正学会使用 Git 时, 你就会觉得这个问题的回答是非常自然的。
然而当真正需要用文字来回答时,却觉得文字好像不是那么够用。 咳,该则么回答呢?
其实,关键的问题不在于如何回答这个问题。 问题的关键是公司已经决定使用它了。那
么,我们的程序员们! 请开动你们的浏览器,请拿出你的搜索引擎工具,去自己发掘答案
吧。在这里,我只能给你们一个最朦胧的感觉。
Git 和 CVS、SVN 不同,是一个分布式的源代码管理工具。Linux 内核的代码就是用 Git 管
理的。它很强,也很快。它给我们带来的直接好处有:
1. 傻瓜都会的初始化,git init, git commit -a, 就完了。对于随便写两行代码就要放到代码
管理工具里的人来说,再合适不过。也可以拿 git 做备份系统,或者同步两台机器的文档,
都很方便。
2. 绝大部分操作在本地完成,不用和集中的代码管理服务器交互,终于可以随时随地
大胆地 check in 代码了。 只有最终完成的版本才需要向一个中心的集中的代码管理服务器提
交。
3. 每次提交都会对所有代码创建一个唯一的 commit id。不像 CVS 那样都是对单个文件
分别进行版本的更改。所以你可以一次性将某次提交前的所有代码 check 出来,而不用考虑
到底提交过那些文件。(其实 SVN 也可以做到这点)
4. branch 管理容易多了,无论是建立新的 branch,还是在 branch 之间切换都一条命令完
成,不需要建立多余的目录。
5. branch 之间 merge 时,不仅代码会 merge 在一起,check in 历史也会保留,这点非常
重要。
6. … 太多了
当然,Git 也会带给我们一些困难,首先,你想要使用好 git,就要真正明白它的原理,理
解它的观念, 对以那些 CVS 的熟手来说,改变你已经固有的纯集中式源代码管理的观念尤