前面的文章介绍了Git的基本概念和用法,本文则是基于GitHub的一个实践介绍,主要内容有:html
GitHub是一个Git的远程代码托管平台,它除了提供代码托管外,还提供了如问题发布、pull request、报表统计等功能,下图为EFCore项目的贡献者统计信息:分布式
GitHub提供了一整套远程协做的解决方案,因此是开源项目的首选平台,许多知名项目都托管在GitHub上。
GitHub能够免费的建立本身的开源代码仓库,同时有付费服务,如私有仓库、GitHub的企业解决方案等。post
GitHub中提供了我的仓库和组织仓库,分别适合我的开源项目以及组织开源项目。
我的仓库主页:spa
组织仓库首页:3d
建立组织:htm
填写组织信息: blog
1.建立一个仓库(我的和团队仓库建立相似,下图是团队仓库)项目管理
2. 仓库的维护:
针对每个仓库,GitHub提供了代码管理(Code)、问题管理(Issues)、拉请求(Pull Request)、项目管理(Projects)、百科(Wiki)、统计(Insights)、仓库设置(Settings)功能,经过这些功能能够对代码仓库进行维护:开发
Fork和Pull request是GitHub上完成代码共享的核心功能,下面就介绍如何使用Fork和Pull Request完成代码贡献:
1. 将贡献目标仓库Fork到本身的仓库中:get
2. 获取Fork后的仓库,获取并对代码进行修改最后推送到远程分支(直接使用master分支):
修改代码后将修改的内容推到远程仓库:
注:更多使用Git的内容参考:《好代码是管出来的——使用Git来管理源代码》以及《好代码是管出来的——Git的分支工做流与Pull Request》。
3. 发起Pull Request:
建立新的pull request将会显示如下信息(代码由SelimTeam仓库合并到yqszt的仓库、代码是可合并的以及代码差别信息):
当点击“Create Pull Request”按钮后,该请求将会被建立。
4. 处理Pull Request:
yqszt/MyBlog库拥有者,能够在pull request选项卡中看到相应的信息并进行合并:
文件差别:
合并Pull Request:
合并结果:
本文介绍了如何使用GitHub来我的/团队代码仓库,对于一个GitHub仓库来讲除了提供基础的代码版本管理功能之外还提供了问题管理、项目管理、百科、拉请求、数据统计等功能,仓库的拥有者(开发者)可使用GitHub进行项目管理、代码管理,还能够将相关知识经过百科进行发布,以便于项目的受益者、贡献者可以快速得到项目信息,而贡献者除了能够经过Wiki获取信息外,还能够Issue、Pull Request对项目提出疑问或进行贡献,拥有者和贡献者全部的沟通均可以经过Github来完成。
另外Github的fork与pull request实际上就是上一篇文章中提到的“集成管理者工做流”的实现,其中在对pull request的代码进行合并时,实际上还强制进行了代码审查,这种工做流模式即适合本地的开发团队,也适合开发人员来自世界各地的开源项目。
从这些方面看来Github再也不是一个简单的Git远程仓库托管平台,而是一个分布式的软件开发管理解决方案。
PS:Github被微软收购,从此Github又会与.Net生态圈擦出什么样的火花?拭目以待。