2024年4月25日发(作者:)

git使用简介

指导老师:邵志远

作者: 卓达城

邮箱: zhuodc@

单位: 华中科技大学服务计算技术与系统/集群与网格计算实验室

简介: 作者是华中科技大学2010级计算机学院计算机系统结构专业研究生

一、简介:

网上找到的git的中文资料,大部分是讲git的命令的使用,对于git的工作流程和如何

实现团队合作的介绍少之又少,特别是对于团队代码库管理者的文档,几乎没有,这份文档

将从开发者和管理者两方面介绍如何使用git进行团队合作开发。

二、git和svn的差异

git和svn最大的差异在于git是分布式的管理方式而svn是集中式的管理方式。如果不

习惯用代码管理工具,可能比较难理解分布式管理和集中式管理的概念。下面介绍两种工具

的工作流程(团队开发),通过阅读下面的工作流程,你将会很好的理解以上两个概念。

集中式管理的工作流程如下图(图2.1):

开发者

开发者

get

commit

get

commit

服务器

commit

get

开发者

图2.1

集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获

取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服

务器,开发者基本上是不可以工作。下面举例说明:

开始新一天的工作:

1:从服务器下载项目组最新代码。

2:进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人

都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者

看看前一个小时自己修改了那些代码,就需要这样做了)。

3:下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服

务器。

这就是经典的svn工作流程,从流程上看,有不少缺点,但也有优点。

缺点:

1、 服务器压力太大,数据库容量暴增。

2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,

就不能提交,还原,对比等等。

3、不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一

般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从

而很好的解决开发人数众多的问题。

优点:

1、 管理方便,逻辑明确,符合一般人思维习惯。

2、 易于管理,集中式服务器更能保证安全性。

3、 代码一致性非常高。

4、 适合开发人数不多的项目开发。

5、大部分软件配置管理的大学教材都是使用svn和vss。

下面开分布式管理的工作流程,如下图(图2.2):

公共服务器

push

pull/fetch

pull/fetch

发送补丁

pull/fetch

开发者

解决冲突

本地提交

发送补丁

开发者

本地提交

主开发者

本地提交

图2.2

分布式和集中式的最大区别在于开发者可以本地提交。每个开发者机器上都有一个服务

器的数据库。

图2.2就是经典的git开发过程。步骤如下: