1. 一般多人协同工作流

前面的文章考虑的都是单人开发工作流,本文实践git实现多人协同工作流。一般工作流如下:

基于上面流程,为了简化,本项目组就三个人,一个是Leader和两个开发人员A和B,Leader主要负责前期流程搭建(建项目、建仓库,建分组和权限设置等)和后期代码检查(code review)。 开发人员主要负责开发工作。

一般协同步骤如下:

1. Leader 本地新建项目,基本架构代码开发,然后推送到本地仓库。(之前文章已实践)

2. Leader 在GitHub上创建组织,邀请成员加入组织(成员如A和B需要各自提前注册GitHub账户)

3. Leader 在组织上创建仓库,然后推送本地代码到远程仓库, 并打上Tag(v1)

4. Leader 从master分支创建出dev分支用于开发的主分支,并推送到远程仓库。

5. 开发人员注册GitHub账户,然后Leader 将开发人员邀请进组织。

6. Leader 为成员设置组织权限和项目权限。

7. Leader 把项目远程地址发给开发人员,开发人员克隆代码到自己本地。

8. 开发人员从dev分支拉出新的分支进行开发。

9. 开发完成后,把代码提交到远程仓库,然后向Leader发起代码review,申请合并分支到dev分支。

10. Leader 进行代码review,确认后合并代码到dev分支。

11. Leader 拉出个分支Release用于上线前的测试(常叫UAT,或者Pre-Prod),如果测试出现bug,则再拉出个bug分支进行修复bug,然后再合并回release和dev分支,测试完成后release和bug分支都可以删除。

12. 最后没问题后准备上线,这时可以把稳定的版本再打Tag(v2),把dev分支申请合并到master分支上线(Prod),这一步也可以采用代码review的方式合并,也可以不用。

2. 多人协同开发实践:

首先,本地新建项目,并推送到本地仓库:

在GitHub上创建组织,在组织上创建仓库。(之前的文章例子中是没有创建组织,而直接场景仓库的, 这里是新的实践)

首先在GitHub右上角点击“New organization”创建组织,如下:

这里是模拟,我就选免费的方式:

填写组织信息后提交:

然后输入成员用户名,邀请其他成员(如本例中的开发人员A和B):

因为这里需要注册另外一个账户来模拟,我就邀请了,直接提交。

接下来填写一下信息,不重要,随便填:

提交后,组织创建完成如下:

在这个组织里,可以创建仓库,可以为组织邀请成员(右边的invite someone按钮)。比如,接着点击这里的“Create a new repository” 创建仓库

填写同本地仓库中同样的项目名称和其他信息,点击“Create repository” 创建仓库:

仓库创建成功。

根据这里提供的命令和远程地址, 把本地仓库的代码推送到这个仓库:

代码推送成功。刷新组织页面,看到项目已经在仓库了,同时master分支也在了:

接下来给版本号打 Tag , 一般默认的版本号是一长串的哈希值,为了简洁和好管理,可以把特定的版本号打上标签(Tag), 如下:

 表示在本地给当前分支的提交记录上打上了Tag。

接下来,看一下log:

这是在本地打了Tag, 接着需要推送到远程仓库:

刷新远程仓库,可以看到Tag:

Tag 是对哈希值版本号的简写,以后就可以用这个Tag代表这个版本。

同时,Release中也出现了发布的版本,以后也可以在这里下载Release版本:

接下来创建出dev分支,并提交到远程仓库:

刷新远程查看:

然后让开发人员注册GitHub账户(这部分不模拟)。然后回到组织页面,邀请他们进组织:

输入开发人员的用户名,点击“Invite”即可。

然后选择成员,发送邀请,这样被邀请的成员的邮箱就会收到一条确认信息,成员在右键上同意加入组织,这样就邀请成功。

然后刷新组织的成员页面可以看到,所有成员:

给成员设置组织权限

可以看到在组织里,成员默认只有只读权限,可以做其他设置,这里保持默认。

接下来为成员设置项目权限

点开项目界面,进入如下界面,即可设置每个成员的权限。(这里没有实际成员,所以看不到成员权限)

接下来,把项目的远程地址发给项目成员,各成员就可以把代码克隆到自己电脑,进行开发。

成员克隆完代码后,从dev分支拉出一个新分支,进行新功能的开发:

开发成员A或B开发完成后,提交到远程仓库后,要合并到dev时,需要Leader对其代码进行代码review:

首先, Leader要先在GitHub上设置代码review的规则:

注:表示以后所有代码合并到dev时都需要通过代码review,这里选择的review人数是1.

然后点击页尾的“Create” 成功创建review规则。

然后,开发人员在GitHub上(这里仍用同一个账户演示)发起代码review的申请:

点击“Create pull request”后创建review申请,界面如下:

同样的,接着,Leader可以进入这个页面对request进行review:

点击“Merge”:

再点击“Confirm merge”:

代码reveiw完成,devA分支已经合并到dev分支,同时可以点击“Delete branch” 按钮删除当前的devA分支,也可以不删除。如下:

查看项目页面中的dev分支,发现新开发的功能A已经合并到dev分支了。如下:

然后,Leader 拉出个分支Release用于上线前的测试(常叫UAT,或者Pre-Prod),如果测试出现bug,则再拉出个bug分支进行修复bug,然后再合并回release和dev分支,测试完成后release和bug分支都可以删除。

最后,没问题后准备上线,这时可以把稳定的版本再打Tag(v2),把dev分支申请合并到master分支上线(Prod),这一步也可以采用代码review的方式合并,也可以不用。

至此,多人协作开发实践完成。

3. 给开源软件贡献代码

首先在GitHub上找到要贡献代码的开源项目,假如Python的流行框架tornado:

接着Fork源代码(拷贝)到自己的仓库:

点击“Fork”按钮,选择本地的一个仓库:

然后刷新自己的远程仓库,发现多了tornado项目:

然后在从自己的远程仓库将开源代码拿到本地修改,然后再推送到自己的远程仓库。

接着通过向开源代码作者申请代码review(Create pull request):

等源代码作者审核确认后即完成代码贡献。然后在开源的源码提交记录里面就我们的提交记录。

4. 其他知识点

GitHub上删除仓库:

在对应项目页面的Settings页上,拉到底,可以看到删除仓库按钮:

如下页面,输入仓库名称,点击按钮删除仓库:

然后输入账户密码:

然后显示仓库已经删除:

5. 新命令总结

1. 拉出分支并切换到新分支:

git checkout -b 新分支名称

2. 给当前版本打Tag:

git tag -a 标签名称 -m 版本说明信息

(如:git tag -a v1 -m '第一版')

3. 推送标签到远程仓库:

git push origin tags

Git 之 多人协同开发工作流相关推荐

  1. Git之多人协同开发

    一.获取远程库信息 $ git remote -v origin https://github.com/xxxxx/node.git (fetch) origin https://github.com ...

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

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

  3. Git 多人协同开发

    1.代码编辑界面介绍:此处使用gedit做演示 代码编辑界面左边为模拟经理的操作 代码编辑界面右边为模拟张三的操作 2.模拟张三先编辑login.py文件代码 进入张三本地仓库:cd Desktop/ ...

  4. git 入门教程之协同开发

    前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协同开发的基础,也是代码备份的 ...

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

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

  6. 利用git 进行多人协作开发

    现在,大部分项目都是用 git 来管理代码的,但当项目变大.多人协作时,git 的使用就变得复杂了,这时就需要在 git 使用的流程上来思考如何更优的使用 git. 对于大部分 web 项目而言,并不 ...

  7. [Git 1]基本操作与协同开发

    在实际开发当中,会遇到一个很关键的问题,如果是多个人开发,该如何保证代码的时效性呢?我们在前面使用过云服务器进行远程开发,这确实是一个不错的办法,但是这需要开发者一直处于有网的环境而且登录ssh人数不 ...

  8. Git分支——多人协作开发

    一.了解分支 Git分支可以将主线任务(项目)分为若干个分支,一个或若干个人操控一个分支,在同一时间点各司其职,完成相对应的工作,各分支完成之后总汇在主线任务上,在最短的时间内完成项目需求,实现多人协 ...

  9. 基于git(分布式版本控制系统)的各种服务器权限工具对比 Gitlab服务器搭建 以及邮箱、LDAP配置 实现公司多人协同开发

    前言 作为大一的小朋友,虽然学的专业和CS有那么一点关系,但放到实习的工作当中,那是完全不够用了:( 在实习老师的指导和帮助下,在实习的头个礼拜,逐步接触了解了git--开源分布式版本控制系统.并在第 ...

  10. 微信开发者工具实现Git两人协同开发

    一个人的一生只有三天,昨天,今天,和明天. -----------Banana • Banuit Gang(香柚帮BUG) 1,首先大香蕉用自己的GitHub先创建了一个私有库 2,创建好之后点击se ...

最新文章

  1. PoPo数据可视化第9期
  2. 在pymongo中使用distinct
  3. [导入]ASP.NET MVC框架开发系列课程(2):一个简单的ASP.NET MVC应用程序.zip(13.70 MB)...
  4. 在python中使用什么函数进行输出_Python中使用pprint函数进行格式化输出的教程
  5. 倒计时 4 天!年度开发者盛会 Unite Shanghai 2019 全日程揭晓(附表)
  6. PyTorch大更新!谷歌出手帮助开发,正式支持TensorBoard | 附5大开源项目
  7. 设计模式(十一):享元模式
  8. 基于地理区域的广告推送模块
  9. 关于苹果审核团队内部消息以及一些过审小方法
  10. 平面变压器的设计(翻译)(5)
  11. PDF 文档拆分工具包
  12. 1124 Raffle for Weibo Followers (20 分)
  13. PC与服务器的区别有哪些?
  14. egret白鹭 基于eui组件的一些动画类 抽屉效果
  15. 加入域时提示“不能访问网络位置”
  16. MATLAB调用python文件以及调用.exe文件方法
  17. 新人学程序第一弹——Java程序实现九九乘法表
  18. C#求100以内的质数
  19. 超级账本Fabric的架构与设计
  20. 在Word中调整图片大小会自动改变怎么办?

热门文章

  1. STM32 热敏电阻测量温度
  2. 化学到底是不是一个好专业?该不该转行?————试图以此文终结所有相关讨论
  3. 戴尔服务器安装win2008找不到硬盘
  4. cmd命令跳舞代码_Golang语言元编程之代码生成
  5. 前端开发面试问题及答案整理
  6. mysql 外文翻译5000字_MySQL数据库管理外文翻译.doc
  7. C盘空间不足,压缩D盘后可扩展C盘空间
  8. 求无序数组的中位数(c语言版本)
  9. 职中心得体会300字高一计算机,职高毕业生自我鉴定范文300字
  10. VBA操作CAD画一条直线