- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
git详解之五git详解之git详解之五git详解之五
Git详解之五
分布式 Git
为了便于项目中的所有开发者分享代码,我们准备好了一台服务器存放远程 Git 仓库。经过前面几章的学习,我们已经学会了一些基本的本地工作流程中所需用到的命令。接下来,我们要学习下如何利用 Git 来组织和完成分布式工作流程。
特别是,当作为项目贡献者时,我们该怎么做才能方便维护者采纳更新;或者作为项目维护者时,又该怎样有效管理大量贡献者的提交。
5.1 分布式工作流程
同传统的集中式版本控制系统(CVCS)不同,开发者之间的协作方式因着 Git 的分布式特性而变得更为灵活多样。在集中式系统上,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相像。而在 Git 网络中,每个开发者同时扮演着节点和集线器的角色,这就是说,每一个开发者都可以将自己的代码贡献到另外一个开发者的仓库中,或者建立自己的公共仓库,让 其他开发者基于自己的工作开始,为自己的仓库贡献代码。于是,Git 的分布式协作便可以衍生出种种不同的工作流程,我会在接下来的章节介绍几种常见的应用方式,并分别讨论各自的优缺点。你可以选择其中的一种,或者结合起 来,应用到你自己的项目中。
集中式工作流
通常,集中式工作流程使用的都是单点协作模型。一个存放代码仓库的中心服务器,可以接受所有开发者提交的代码。所有的开发者都是普通的节点,作为中心集线器的消费者,平时的工作就是和中心仓库同步数据(见图 5-1)。
图 5-1. 集中式工作流
如果两个开发者从中心仓库克隆代码下来,同时作了一些修订,那么只有第一个开发者可以顺利地把数据推送到共享服务器。第二个开发者在提交他的修订之 前,必须先下载合并服务器上的数据,解决冲突之后才能推送数据到共享服务器上。在 Git 中这么用也决无问题,这就好比是在用 Subversion(或其他 CVCS)一样,可以很好地工作。
如果你的团队不是很大,或者大家都已经习惯了使用集中式工作流程,完全可以采用这种简单的模式。只需要配置好一台中心服务器,并给每个人推送数据的 权限,就可以开展工作了。但如果提交代码时有冲突, Git 根本就不会让用户覆盖他人代码,它直接驳回第二个人的提交操作。这就等于告诉提交者,你所作的修订无法通过快近(fast-forward)来合并,你必 须先拉取最新数据下来,手工解决冲突合并后,才能继续推送新的提交。绝大多数人都熟悉和了解这种模式的工作方式,所以使用也非常广泛。
集成管理员工作流
由于 Git 允许使用多个远程仓库,开发者便可以建立自己的公共仓库,往里面写数据并共享给他人,而同时又可以从别人的仓库中提取他们的更新过来。这种情形通常都会有 个代表着官方发布的项目仓库(blessed repository),开发者们由此仓库克隆出一个自己的公共仓库(developer public),然后将自己的提交推送上去,请求官方仓库的维护者拉取更新合并到主项目。维护者在自己的本地也有个克隆仓库(integration manager),他可以将你的公共仓库作为远程仓库添加进来,经过测试无误后合并到主干分支,然后再推送到官方仓库。工作流程看起来就像图 5-2 所示:
项目维护者可以推送数据到公共仓库 blessed repository。 2. 贡献者克隆此仓库,修订或编写新代码。
贡献者推送数据到自己的公共仓库 developer public。 4. 贡献者给维护者发送邮件,请求拉取自己的最新修订。
维护者在自己本地的 integration manger 仓库中,将贡献者的仓库加为远程仓库,合并更新并做测试。
维护者将合并后的更新推送到主仓库 blessed repository。
图 5-2. 集成管理员工作流
在 GitHub 网站上使用得最多的就是这种工作流。人们可以复制(fork 亦即克隆)某个项目到自己的列表中,成为自己的公共仓库。随后将自己的更新提交到这个仓库,所有人都可以看到你的每次更新。这么做最主要的优点在于,你可 以按照自己的节奏继续工作,而不必等待维护者处理你提交的更新;而维护者也可以按照自己的节奏,任何时候都可以过来处理接纳你的贡献。
司令官与副官工作流
这其实是上一种工作流的变体。一般超大型的项目才会用到这样的工作方式,像是拥有数百协作开发者的 Linux 内核项目就是如此。各个集成管理员分别负责集成项目中的特定部分,所以称为副官(lieutenant)。而所有这些集成管理员头上还有一位负责统筹的总 集成管理员,称为司令官(dictator)。司令官维护的仓库用于提供所有协作者拉取最新集成的项目代码。整个流程看起来如图 5-3 所示:
一般的开发者在自己的特性分支上工作,并不定期地根据主干分支(dictator 上的 master)衍合。
副官(lieu
您可能关注的文档
- fir系列光纤红外测温仪使说明书fir系列光纤红外测温仪使用说明书fir系列光纤红外测温仪使用说明书fir系列光纤红外测温仪使用说明书.doc
- flash as入门flah as入门flash as入门flash as入门.doc
- flash 3d页游开发工师 个人简历模板flash 3d页游开发工程师 个人简历模板flash 3d页游开发工程师 个人简历模板flash 3d页游开发工程师 个人简历模板.doc
- firefly歌词(中英文照)firefly歌词(中英文对照)firefly歌词(中英文对照)firefly歌词(中英文对照).ppt
- flash 8动画创作软件使用方法简介flash 8动画创作软件的使用方法简介flash 8动画创作软件的使用方法简介flash 8动画创作软件的使用方法简介.doc
- fir滤波器幅频特性对ev的影响仿真fir滤波器幅频特性对evm的影响仿真fir滤波器幅频特性对evm的影响仿真fir滤波器幅频特性对evm的影响仿真.doc
- flash怎样实现引用外部s脚本文件flash怎样实现引用外部as脚本文件flash怎样实现引用外部as脚本文件flash怎样实现引用外部as脚本文件.doc
- flash中的纯as移动方系列基础教程和实例集锦一flash中的纯as移动方法系列基础教程和实例集锦一flash中的纯as移动方法系列基础教程和实例集锦一flash中的纯as移动方法系列基础教程和实例集锦一.doc
- flashas3.0加农炮靶小游戏flashas3.0加农炮打靶小游戏flashas3.0加农炮打靶小游戏flashas3.0加农炮打靶小游戏.doc
- flash 动画制作技法研flash 动画制作技法研究flash 动画制作技法研究flash 动画制作技法研究.doc
最近下载
- 年度赛课外拓展阅读《走近创世神话感受中外异同》教学设计1.docx
- 新版ISO13485-2016医疗器械质量管理体系全套GMP手册程序记录文件.docx
- 心理咨询师(中科院心理研究所)10套题汇总题库-下(多选题汇总).docx
- 北京市轨道交通房山线岩土工程勘察报告.doc
- 微积分(二)(浙江大学)中国大学MOOC 慕课 2021章节测验期末考试答案.docx
- 2023年电子科技大学成都学院计算机科学与技术专业《计算机网络》科目期末试卷A(有答案).docx VIP
- 第一部分LDTH系列电磁流量计.PDF
- 李前程编《建筑力学》(第2版)第六章.ppt VIP
- 心理咨询师(中科院心理研究所)10套题汇总题库-上(单选题汇总).docx
- Defensics健壮性测试工具测试方案.docx
文档评论(0)