文档介绍:git 使用简介
一、简介:
网上找到的 git 的中文资料,大部分是讲 git 的命令的使用,对于 git 的工作流程和如何 实现团队合作的介绍少之又少,特别是对于团队代码库管理者的文档,几乎没有,这份文档 将从开发者和管理者两方面介绍如何使用 git 进行团队合作开发。
二、git 和 svn 的差异
git 和 svn 最大的差异在于 git 是分布式的管理方式而 svn 是集中式的管理方式。如果不 习惯用代码管理工具,可能比较难理解分布式管理和集中式管理的概念。下面介绍两种工具 的工作流程(团队开发),通过阅读下面的工作流程,你将会很好的理解以上两个概念。
集中式管理的工作流程如下图(图 ):
开发者
get
commit
开发者
commit
服务器
get
commit
get
开发者
图
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获 取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服 务器,开发者基本上是不可以工作。下面举例说明:
开始新一天的工作:
1:从服务器下载项目组最新代码。
2:进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人
都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者 看看前一个小时自己修改了那些代码,就需要这样做了)。
3:下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服 务器。
这就是经典的 svn 工作流程,从流程上看,有不少缺点,但也有优点。 缺点:
1、 服务器压力太大,数据库容量暴增。
2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上, 就不能提交,还原,对比等等。
3、不适合开源开发(开发人数非常非常多,但是 Google app engine 就是用 svn 的)。但是一 般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从 而很好的解决开发人数众多的问题。
优点:
1、 管理方便,逻辑明确,符合一般人思维习惯。
2、 易于管理,集中式服务器更能保证安全性。
3、 代码一致性非常高。
4、 适合开发人数不多的项目开发。
下面开分布式管理的工作流程,如下图(图 ):
公共服务器
push
pull/fetch
pull/fetch
开发者
pull/fetch
发送补丁
主开发者
本地提交
解决冲突
本地提交
本地提交
发送补丁
开发者
本地提交
图
分布式和集中式的最大区别在于开发者可以本地提交。每个开发者机器上都有一个服务
器的数据库。
图 就是经典的 git 开发过程。步骤如下:
一般开发者的角度:
1:从服务器上克隆数据库(包括代码和版本信息)到单机