七、玩转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处(远端本地都回退)
将绿色分支基于黑色分支进行变基
1
git rebase origin/master
接下来处理冲突(如果存在),重新添加文件并执行命令
1
git rebase --continue
循环执行这一步,直到处理完所有冲突。
接下来强制将绿色分支推送。
进行pull request 进行合并。
GitHub会将蓝色四个commit移动到黑色分支后。
快速处理繁琐的过程。参考:Rerere
将
Rerere
全局配置打开1
git config --global rerere.enabled true
切换到绿色分支与master进行合并
1
git merge master
如果出现冲突,则处理冲突。如果出现
Recorded preimage
字眼则表示成功。添加文件并生成commit
1
2git add .
git commit -am"temp"回退版本
1
git reset --hard HEAD~1
绿色分支基于master分支做变基
1
git rebase master
接下来反复执行
git rebase --continue
即可。
如何保证集成的质量
可以通过设置进行对分支进行保护。
可以在marketplace
进行安装检查代码的插件。
怎么给项目增加详细的指导文档
Wiki可以通过markdown进行编写。