概述

为了提高协同开发效率,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会被记录下来。

转载于:https://www.cnblogs.com/fengju/p/6174197.html

HelloX项目github协同开发指南相关推荐

  1. iOS协同开发-iOS代码版本控制-GitHub代码托-关东升-专题视频课程

    iOS协同开发-iOS代码版本控制-GitHub代码托-4908人已学习 课程介绍         介绍了如何使用Git进行代码版本控制,其中包括Git服务器的搭建.Git常用命令和协同开发,还介绍了 ...

  2. 项目实训--Unity多人游戏开发(五、转入前端开发+plasticSCM多人协同开发环境)

    目录 工作进展.打入前段 unity协同开发环境plasticSCM 总结 工作进展.打入前段 后端已经具备部分功能.前端因为素材以及游戏逻辑等原因,与上一期后端的内容没有开发,此部分无法进行及时测试 ...

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

    第一部分 基础篇 第1章 开篇综述 2 1.1 iOS概述 2 1.1.1 iOS介绍 2 1.1.2 iOS 6新特性 2 1.2 开发环境及开发工具 3 1.3 本书中的约定 4 1.3.1 案例 ...

  4. 团队在Github上协同开发项目流程

    2019独角兽企业重金招聘Python工程师标准>>> 多用户基于同一个Github上得项目并行开发,当前用户的开发流程: 注: origin:默认的远程主机名 master:默认的 ...

  5. 使用git和github进行协同开发流程

    目录 前言 仓库(Repository) 源仓库 开发者仓库 分支(Branch) 永久性分支 暂时性分支 工作流(workflow) 总结 参考资料 前言 (本文假设各位已经对基本git的基本概念. ...

  6. 区块链项目开发指南大纲

    区块链项目开发指南大纲 @(Bing的默认笔记本) 去中心化应用概览 以太坊的工作原理 编写智能合约 开始使用web3.js 创建钱包服务 创建智能合约部署平台 创建投注App 创建企业级智能合约 创 ...

  7. GitHub:如何用同一个 github 帐号在两台PC上同步开发?如何协同开发?

    转载自:https://blog.csdn.net/zeqiao/article/details/75124532 饱暖思淫欲,写了项目就想试试上传到github.com,之前用Git和SourceT ...

  8. github项目团队协作开发流程

    数据分析绘图软件开发项目将由多人合作进行开发.测试.发布等工作,为了控制软件开发的版本管理.代码共享以及项目整合等,有必要采用git分布式版本管理工具进行项目版本管理和github开源平台作为代码仓库 ...

  9. GitHub团队协同开发流程

    GitHub团队协同开发流程 1.  在github上创建组织,并邀请成员建立队伍 创建组织的具体教程: http://blog.csdn.net/song_shui_lin/article/deta ...

最新文章

  1. Ispur服务器收集系统日志,centos 7.2往rsyslog服务器端发送系统日志
  2. mysql简单概述_MySQL入门很简单: 1 数据库概述
  3. FFmpeg RTMP推HEVC/H265流
  4. docker容器间数据共享
  5. Java(第十五章)
  6. 从入门到深入Fiddler 2 (二)
  7. 大家都关注的Serverless,阿里怎么做的?
  8. Android逆向笔记-IDA Pro动态调试Android程序(真机)
  9. 是否,是否,总是富肥穷瘦?(文末上周投票公布)
  10. PHP cookie和session的分析
  11. python入门(三) 实现QQ自动发送消息
  12. 正弦信号与噪声信号仿真生成实测信号,自相关分析
  13. linux加密自己的smb目录,SmbFile连接加密共享文件夹
  14. BC26与BC260Y区别
  15. 深度学习服务器?深度了解一下!
  16. 利用 MATLAB 编程实现乘子法求解约束最优化问题。
  17. sqlserver 查询单引号
  18. 习题3.3投骰子的随机游戏
  19. 手机换android版本,安卓手机怎么换系统(最好能自己换)
  20. QQ空间农场游戏常见的十大问题汇总

热门文章

  1. sql case when 速记
  2. 使用clear fix清除浮动
  3. [转] 大连理工大学部分有效FTP列表1.0
  4. C# ACCESS数据库操作类
  5. 怎么教计算机应用基础,怎样教好《计算机应用基础》课
  6. Windows下使用gvim格式化xml文件
  7. leetcode算法题--字符串的排列
  8. leetcode算法题--回文数
  9. java clone方法_干货满满:Java中创建对象的五种方式详解
  10. 亮剑.NET. 图解C#开发实战 在线阅读