专栏首页小康的自留地七、玩转Git三剑客-使用GitHub进行团队协作

七、玩转Git三剑客-使用GitHub进行团队协作

创建团队的项目

通过新建组织这个页面即可新建一个组织。

怎么选择适合自己团队的工作流

主干开发

  1. 开发团队系统开发团队系统设计和开发能力强。有一套有效的特性切换的实施机制,保证上线后无需修改代码就能够修改系统行为。需要快速迭代,想获得CI/CD所有好处。设计和开发能力强。有一套有效的特性切换的实施机制,保证上线后无需修改代码就能够修改系统行为。需要快速迭代,想获得CI/CD所有好处。
  2. 组件开发的团队,成员能力强,人员少,沟通顺畅。用户升级组件成本低的环境。

Git Flow

不具备主干开发能力。有预定的发布周期。需要执行严格的发布流程。

Github Flow

不具备主千开发能力。随时集成随时发布:分支集成时经过代码评审和自动化测试,就可以立即发布的应用。

GitLab Flow(带生产分支)

不具备主干开发能力。无法控制准确的发布时间,但又要求不停地集成。

GitLab Flow(带环境分支)

不具备主干开发能力。需要逐个通过各个测试环境的验证才能发布。

GitLab Flow(带发布分支)

不具备主干开发能力。需要对外发布和维护不同版本。

如何挑选合适的分支集成策略

在项目设置处可以选择允许通过那种方式合并。

例如如下项目,通过三种方式进行合并的结果。

  1. Create a merge commit

只要git能够解决即创建一个merge。

  1. Squash and merge

把三个蓝色的commit合并成一个,然后合并到黑色分支。

  1. Rebase and merge

相当于把蓝色的三个commit移动到黑色后边。

启用issue跟踪需求和任务

可以通过设置进行开启,默认是开启的。

也可以建立模板。

如何用project管理issue

  1. 创建project

  1. 将issue关联project

项目内部实施code review

为了保证集成分支代码质量,不允许不经过code review就集成到master分支。

  1. 添加规则

  1. 创建规则

团队协作时如何做多分支的集成

Create a merge commit

  1. 黑色分支首先与蓝色分支进行合并

  1. 接下来黑色分支与绿色分支进行合并 如果出现冲突,则需要人工解决。

解决完冲突进行合并。

Squash and merge

  1. 黑色分支首先与蓝色分支进行合并

会将蓝色分支的三次commit进行合并,然后加入到黑色分支。

  1. 接下来黑色分支与绿色分支进行合并 同样的需要处理冲突。

接下来进行合并。

Rebase and merge

  1. 黑色分支首先与蓝色分支进行合并

也就是将蓝色分支的三个commit直接移动到黑色主分支的后边。

  1. 接下来黑色分支与绿色分支进行合并 同样的需要处理冲突。

此时变不能进行合并了。

  1. 如果一定要用此方式则需要处理
    • 将绿色分支回退到到s处(远端本地都回退)
    • 将绿色分支基于黑色分支进行变基 git rebase origin/master接下来处理冲突(如果存在),重新添加文件并执行命令 git rebase --continue循环执行这一步,直到处理完所有冲突。
    • 接下来强制将绿色分支推送。

快速处理繁琐的过程。参考:Rerere

  1. Rerere全局配置打开 git config --global rerere.enabled true
  2. 切换到绿色分支与master进行合并 git merge master如果出现冲突,则处理冲突。如果出现Recorded preimage字眼则表示成功。
  3. 添加文件并生成commit git add . git commit -am"temp"
  4. 回退版本 git reset --hard HEAD~1
  5. 绿色分支基于master分支做变基 git rebase master接下来反复执行git rebase --continue即可。

如何保证集成的质量

可以通过设置进行对分支进行保护。

可以在marketplace进行安装检查代码的插件。

怎么给项目增加详细的指导文档

Wiki可以通过markdown进行编写。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 06JavaScript作用域与对象

    即使我们在定义这个函数之前调用它,函数仍然可以工作。这是因为在 JavaScript 中执行上下文的工作方式造成的。

    Dreamy.TZK
  • 规范JavaScript注释

    //(双斜线)与代码之间保留一个空格,并且//(双斜线)与注释文字之间保留一个空格。

    Dreamy.TZK
  • 一、Axios基础

    Dreamy.TZK
  • jquery 事件和动画

    blur focus load resize scroll unload click dbclick mousedown mouseup mousemo...

    用户5760343
  • 19年你应该关注这50款前端热门工具(上)

    19年,又是新的一年,“前端届”,又出了哪些新的“玩意”,今天小编向你推荐目前比较热门新鲜度靠前的50款前端工具,希望在新的一年里,对你有所帮助。

    前端达人
  • cpu频繁有序的忽高忽低

    今天有空给大家分享一个我刚刚遇到的小问题,标题就是今天的问题。上图: image.png CPU 忽高忽低的发现了吧,对于我这个纠结者,必须得弄清楚是怎么回...

    老七Linux
  • 安卓SDK的安装和使用

    下载地址:https://developer.android.com/studio。

    算法发
  • 任何机器只不过是一套逻辑的实现

    2008-09-07 没事的时候,对着数学公式发一下呆,觉着世界很奇妙,所有的机器,不管是无敌的机器人、计算机,还是常见的汽车、飞机,其实不都是一套各异的数学逻...

    雷大亨
  • 怎么用手机远程登录云服务器?

    相信很多人现在会有移动办公的需求,所以手机远程云服务器是很有用的,至少对于我来说还是经常有需求的,有需要的可以看看。

    云爱好者
  • day81-<权限组件>-基本流程以及部分代码

    少年包青菜

扫码关注云+社区

领取腾讯云代金券