七、玩转Git三剑客-使用GitHub进行团队协作
时间:2022-07-23
本文章向大家介绍七、玩转Git三剑客-使用GitHub进行团队协作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
创建团队的项目
通过新建组织这个页面即可新建一个组织。
怎么选择适合自己团队的工作流
主干开发
- 开发团队系统开发团队系统设计和开发能力强。有一套有效的特性切换的实施机制,保证上线后无需修改代码就能够修改系统行为。需要快速迭代,想获得CI/CD所有好处。设计和开发能力强。有一套有效的特性切换的实施机制,保证上线后无需修改代码就能够修改系统行为。需要快速迭代,想获得CI/CD所有好处。
- 组件开发的团队,成员能力强,人员少,沟通顺畅。用户升级组件成本低的环境。
Git Flow
不具备主干开发能力。有预定的发布周期。需要执行严格的发布流程。
Github Flow
不具备主千开发能力。随时集成随时发布:分支集成时经过代码评审和自动化测试,就可以立即发布的应用。
GitLab Flow(带生产分支)
不具备主干开发能力。无法控制准确的发布时间,但又要求不停地集成。
GitLab Flow(带环境分支)
不具备主干开发能力。需要逐个通过各个测试环境的验证才能发布。
GitLab Flow(带发布分支)
不具备主干开发能力。需要对外发布和维护不同版本。
如何挑选合适的分支集成策略
在项目设置处可以选择允许通过那种方式合并。
例如如下项目,通过三种方式进行合并的结果。
- Create a merge commit
只要git能够解决即创建一个merge。
- Squash and merge
把三个蓝色的commit合并成一个,然后合并到黑色分支。
- Rebase and merge
相当于把蓝色的三个commit移动到黑色后边。
启用issue跟踪需求和任务
可以通过设置进行开启,默认是开启的。
也可以建立模板。
如何用project管理issue
- 创建project
- 将issue关联project
项目内部实施code review
为了保证集成分支代码质量,不允许不经过code review就集成到master分支。
- 添加规则
- 创建规则
团队协作时如何做多分支的集成
Create a merge commit
- 黑色分支首先与蓝色分支进行合并
- 接下来黑色分支与绿色分支进行合并 如果出现冲突,则需要人工解决。
解决完冲突进行合并。
Squash and merge
- 黑色分支首先与蓝色分支进行合并
会将蓝色分支的三次commit进行合并,然后加入到黑色分支。
- 接下来黑色分支与绿色分支进行合并 同样的需要处理冲突。
接下来进行合并。
Rebase and merge
- 黑色分支首先与蓝色分支进行合并
也就是将蓝色分支的三个commit直接移动到黑色主分支的后边。
- 接下来黑色分支与绿色分支进行合并 同样的需要处理冲突。
此时变不能进行合并了。
- 如果一定要用此方式则需要处理
- 将绿色分支回退到到s处(远端本地都回退)
- 将绿色分支基于黑色分支进行变基 git rebase origin/master接下来处理冲突(如果存在),重新添加文件并执行命令 git rebase --continue循环执行这一步,直到处理完所有冲突。
- 接下来强制将绿色分支推送。
快速处理繁琐的过程。参考:Rerere
- 将
Rerere
全局配置打开 git config --global rerere.enabled true - 切换到绿色分支与master进行合并
git merge master如果出现冲突,则处理冲突。如果出现
Recorded preimage
字眼则表示成功。 - 添加文件并生成commit git add . git commit -am"temp"
- 回退版本 git reset --hard HEAD~1
- 绿色分支基于master分支做变基
git rebase master接下来反复执行
git rebase --continue
即可。
如何保证集成的质量
可以通过设置进行对分支进行保护。
可以在marketplace
进行安装检查代码的插件。
怎么给项目增加详细的指导文档
Wiki可以通过markdown进行编写。
- sharedpreferences如何保存对象
- Android:全面解析熟悉而陌生 的 Application 类使用
- ToggleButton和Switch使用大全
- Android 无需权限显示悬浮窗, 兼谈逆向分析 App
- android数据保存之greendao
- CheckBox和RadioButton使用大全
- 关于 Android 实现滑动返回的几种方法总结
- android 面试之listview
- 放yy直播点赞动画
- TableLayout和Viewpager实现切换
- Android 数据库框架ormlite
- SwipeRefreshLayout实现上拉下拉刷新
- 常见Button使用详解
- android Gradle的几个基本概念
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法