概述

为了提高协同开发效率,HelloX项目已托管到github网站上。根据目前的开发进展,创建了下列几个子项目:

HelloX操作系统内核项目:https://github.com/hellox-project/HelloX_Kernel.git

HelloX操作系统GUI模块项目:https://github.com/hellox-project/HelloX_GUI.git

面向STM32的移植版:https://github.com/hellox-project/HelloX_STM32.git

后续根据需要,再增加其它相关子项目,所有这些子项目都是HelloX项目的一部分。

本文档对如何协同开发进行描述,旨在帮助开源开发人员顺利搭建起github协作开发环境,共同开发HelloX项目。

Github工作原理简介

严格来说,github是一个网站的名称,真正的版本管理功能是由git实现的。为了简便,笼统的认为github就是一个版本管理系统就OK了。

其实,github的工作原理非常简单,借用我们日常开发时使用的策略类比,会很容易理解。比如,现在有一个开发项目,这个开发项目经过长时间积累,已经有了数万行代码,并由一个组织或个人唯一管理(如果多个人同时管理,就乱套了)。你希望对这个项目进行修改或者优化。这时候,谨慎起见,你不可能直接在原项目上进行修改,而是把原来的项目复制一份,在这个复制项目上进行修改。修改完毕后,会总结出修改了哪些内容(修改了哪些文件,添加了哪些文件,删除了哪些文件等),然后把修改的内容提交给管理者审核,审核通过后,管理者会逐一合并到原有项目中。

Github自动化的实现了这个过程。原始项目存放在一个固定的位置,并由一个作者同意管理。比如对于HelloX项目的HelloX操作系统内核源代码,其固定存放位置是github.com/hellox-project/HelloX_Kernel,当前的管理者是我本人。如果你希望参与开发,对内核进行修改,那么就需要首先复制一份(github上叫做fork),到你自己的位于github网站的个人空间内。这时候你就可以随便修改这份copy了。但由于这份拷贝是在网上,无法直接修改,因此你必须把这份copy下载到本地(github叫做clone),然后在本地进行修改。Github(严格来说,是github的本地工具)会监控这个修改过程,把主要的修改内容都记录下来(之所以记录过程,是方便倒回)。本地修改完之后,你告诉github(叫做commit),已经修改完成了,github会把修改的内容统一合并到本地代码库中。

注意,这时候你的修改还是停留在本地代码库中,尚未传递到你自己的网上空间内。如果要把修改内容上传到你自己的github空间,需要执行一个叫做push的操作,把本地commit的修改,推送到你自己的github空间内。

一旦push完成,修改才同步到你自己的github空间中。为了把你的修改合并到原始代码中,你必须发起一个pull request,告诉项目管理者,你做了哪些修改,为什么做这些修改,申请项目管理者合并到主流版本中。剩下的事情,就是项目管理者的事了,他会考虑这些修改申请,必要时会发起讨论,或者跟你联系,讨论这些修改的必要性。如果最终确定这些修改是有价值的,那么项目管理者会merge到主流版本中,并记录你的contribution。

好了,通过上面的描述,记住并理解下面的关键词,后面的操作就非常简单了:

Fork,clone,commit,push,merge

HelloX项目github协作开发指南

首先,你必须了解HelloX项目的背景及目标,判断是否与您的背景或者意图能够匹配,以决定是否要投入开发。这个过程要慎重仔细,一旦决定要投入,那么就需要遵循开源精神,有始有终,当然,您的贡献会被尽量精确的记录下来(HelloX项目的每个子项目下,都有authors.txt文件,记录了贡献者的主要贡献及个人信息)。

在决定投入开发之后,剩下的事情就很简单了。下面一步一步的介绍。

第一步:在github上注册

在github上注册一下,创建自己的user space。这个过程不细说,直接登录github.com,点击sign up即可。建议选择注册的用户名、邮箱、密码等信息,万一您成为github上的大牛,一个很酷的名字会很重要。

第二步:fork待参与的项目

在github上注册成功之后,会一直保持登录。这时候,建议fork一下您希望参与开发的项目,比如您希望参与HelloX项目中的HelloX操作系统STM32版子项目,那么在浏览器地址栏中输入https://github.com/hellox-project,即可连接到hellox项目的主页下,页面上会列出所有子项目。选择其中的一个,进去之后,点击页面上的fork按钮,即可复制一份到您自己的空间。

再回到您自己的个人页面,即可看到fork过来的项目。

第三步:下载并安装github客户端

下列地址可以下载github客户端:

https://help.github.com/articles/set-up-git

下载后,直接运行即可。注意,根据我的经验,上面网页上下载的只是一个launch程序,并不是真正的github安装程序。这个launch程序会进一步从github网站上(貌似托管在Amazon的云上)下载安装程序。这个过程会比较长,网络情况不好的话,可能会失败。请多试几次。

在安装过程中,会提示您输入第一步创建的github账户信息。

第四步:启动github命令行客户端,下载项目

最新的github版本,提供图形界面和命令行界面。虽然图形界面做得很简洁很好看,但用起来还是感觉不太方便,我个人仍然倾向于github命令行客户端。

按照缺省安装,github会在桌面上生成一个git shell的图标,双击即可进入命令行界面。这个命令行界面整合了github的相关命令和windows相关命令,比原来的unix命令行风格好用了很多。

创建一个本地工作目录,比如D:\HelloX,然后使用CD等命令,定位到工作目录,运行下列命令:

D:\HelloX>git clone https://github.com/yourname/HelloX_STM32.git

即可把您在github上fork的项目,下载到本地。注意把上述URL中的用户名,换成你自己的github用户名。

下载完毕之后,进入新创建的项目目录(位于您的工作目录下),然后会发现命令行提示符变了。运行git status命令,即可看到当前项目的状态。

第五步:对源代码进行编辑和修改

这一步是核心工作,使用编译器打开下载的项目,比如用MDK,可以直接打开STM32版的HelloX内核项目。遵循正常的程序编写流程,对源代码进行修改即可。

第六步:提交本地修改

第五步修改完成之后,您所做的修改只是停留在源代码文件中,尚未被github接纳到它自己的数据库中。这时候,必须在命令行下执行commit操作。过程如下:

1.      执行git status命令,会列做了修改的文件,包括增加的源代码文件、删除的源代码文件;

2.      执行git add . 命令(注意命令后面的点号),把修改增加到github管理的数据库中;

3.      执行git commit –m “修改描述” 命令,把修改提交到github本地库中。注意,引号中的描述,是对本次修改的简要介绍,会呈现在源代码文件的修改历史中。

完成上述步骤之后,您所做的修改就记录到github本地库中了。

如果做进一步的源代码修改,修改完成后,重复上述操作,提交到本地库中。

第七步:把本地修改上载到github

在本地代码库上完成提交之后,修改还是局限在本地库,尚未上传到github的个人空间内。这时候执行下列命令,把修改的代码同步到您自己的github空间中:

D:\HelloX>git push –u origin master

其中的origin,代表代码的原始版本,即是您自己在github上fork的版本(注意不是项目的最原始版本)。Master则是本地版本。

第八步:发起pullrequest,请求合并修改

Push到个人github空间之后,如果希望合并到项目的主版本中,必须发起pull request,让项目管理员来审核您所做的修改,并决定是否合并到项目主版本中。具体操作是,在您自己的github项目页面上,点击pull request,会显示出创建pull request的页面。如果感觉页面内容很复杂,不要紧,直接点击create pull request即可,大部分内容,github已帮助您填好了。

到此,您的大部分工作就完成了,接下来就是项目管理员审核pull request,并讨论是否最终合并到版本中。如果确定要合并,那么您的contribution会被记录下来。

HelloX项目github协同开发指南的更多相关文章

  1. Visual Studio C# 利用git和github协同开发时产生冲突的解决办

    Visual Studio C# 利用git和Github协同开发时产生冲突的解决办法 前言:在前两天的助教作业中,发现了自己没有办法解决在用vs开发C#的窗体项目的过程中产生的冲突问题,在查阅了资料 ...

  2. ReadHub项目Kotlin版开发指南(三、MVP架构)

    ReadHub项目Kotlin版转换指南(一.环境搭建) ReadHub项目Kotlin版转换指南(二.数据库和网络请求) ReadHub项目Kotlin版转换指南(三.MVP架构) Android ...

  3. Github 协同开发

    ithub开发流程 Github的流程.也就是: 开发者各自fork项目的repo到自己Github账户下 每次开发同步到项目的repo然后再进行开发 push自己的开发分支到自己Github账户下面 ...

  4. github协同开发

    看官请移步GitHub团队项目合作流程 本文是上述链接的截图,担心哪天作者不小心删除了,备一份在自己这里,仅为自己看着方便.侵权请告知

  5. 怎样在github上协同开发

    How to co-work wither parter via github. Github协同开发情景模拟 Github不仅有很多开源的项目可以参考,同样也是协同开发的最佳工具,接下来的就模拟一下 ...

  6. 《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见

    智捷iOS课堂-关东升老师最新作品:<iOS开发指南-从0基础到AppStore上线>正式出版了 iOS架构设计.iOS性能优化.iOS测试驱动.iOS调试.iOS团队协作版本控制.... ...

  7. 《iOS开发指南:从零基础到App Store上架(第2版)》

    <iOS开发指南:从零基础到App Store上架(第2版)> 基本信息 作者: 关东升 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115348029 上架时间:201 ...

  8. 20180115-Xcode创建多个工程协同开发

    今天研究了一下在Xcode中创建多个工程,达到模块化的目的的同时,实现多个相似项目的协同开发,最主要的是可以实现多工程连编.项目的效果如下: 接下来创建一个这样的项目,以及他们之间的通信 1.建一个文 ...

  9. Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码

    前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...

随机推荐

  1. 用CodeBlocks构建C项目时候出现的问题

    后缀名为depend的文件 是makefile 编译产生的文件 是生成一种依赖关系 帮助程序编译的   那为什么有时候会生成而有时候又不会呢?   看你makefile 自己的编写 写了就有 没写就没 ...

  2. 关于Condition Variable的一些思考

    可能大家都使用过condition variable(之后称cv),一些博客也对cv做了介绍,但是有的说的不完全正确,甚至有误导使用者的倾向,其实最合理的使用方式是查阅文档, 如果你英语还ok的话,h ...

  3. Linux命令之ifconfig

    许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...

  4. ubuntu12.04常见错误总结

    1.通过终端安装程序sudo apt-get install xxx时出错: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource ...

  5. 使用jQuery出现the function undefined

    出现function undefined往往是相关的JS文件没有导入导致,在相关文件都导入的情况下,使用jQuery提供的方法还会出现function undefined错误,或许就是jQuery对象 ...

  6. Flink资料(7) -- 背压监控

    背压(backpressure)监控 本文翻译自Back Pressure Monitoring --------------------------------------------------- ...

  7. PHP面向对象编程学习之对象基础

    php虽然是一门学习起来非常简单的语言,但是这门语言也包含了对面向对象编程的支持.尤其是随着php5的发布,php对面向对象的支持有了很大的进步.最近学习了一下php的面向对象编程,不禁感慨,面向对象 ...

  8. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(六)

    目的: 1. 为我们自己的watchdog写一个驱动 步骤: 通过之前的介绍,我们很容易猜想到写我们基于PCI的watchdog驱动,可以分2个步骤. 1. 探测加载PCI设备 这部分代码跟我们的设备 ...

  9. 许士彦:创业不走寻常路 APP最好时间已过

    从用户体验服务设计公司eico design到拥有两千多万用户的独立微博客户端Weico,再到备受欢迎的影像APP(微可拍,Weico Gif),Weico团队走过了一条不寻常的创业之路. 作为一家新 ...

  10. iOS UISearchBar学习笔记

    UISearchBar 是一个搜索控件,它提供了一个文本输入框,一个查找button,一个书签button.一个取消button.我们须要使用UISearchBarDelegate代理来进行查找工作. ...