1. 一般多人协同工作流
前面的文章考虑的都是单人开发工作流,本文实践git实现多人协同工作流。一般工作流如下:
基于上面流程,为了简化,本项目组就三个人,一个是Leader和两个开发人员A和B,Leader主要负责前期流程搭建(建项目、建仓库,建分组和权限设置等)和后期代码检查(code review)。 开发人员主要负责开发工作。
一般协同步骤如下:
Leader 本地新建项目,基本架构代码开发,然后推送到本地仓库。(之前文章已实践)
Leader 在GitHub上创建组织,邀请成员加入组织(成员如A和B需要各自提前注册GitHub账户)
Leader 在组织上创建仓库,然后推送本地代码到远程仓库, 并打上Tag(v1)
Leader 从master分支创建出dev分支用于开发的主分支,并推送到远程仓库。
开发人员注册GitHub账户,然后Leader 将开发人员邀请进组织。
Leader 为成员设置组织权限和项目权限。
Leader 把项目远程地址发给开发人员,开发人员克隆代码到自己本地。
开发人员从dev分支拉出新的分支进行开发。
开发完成后,把代码提交到远程仓库,然后向Leader发起代码review,申请合并分支到dev分支。
Leader 进行代码review,确认后合并代码到dev分支。
Leader 拉出个分支Release用于上线前的测试(常叫UAT,或者Pre-Prod),如果测试出现bug,则再拉出个bug分支进行修复bug,然后再合并回release和dev分支,测试完成后release和bug分支都可以删除。
最后没问题后准备上线,这时可以把稳定的版本再打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
版权归原作者 龙泉太阿 所有, 如有侵权,请联系我们删除。