5种 Git workflow 简介
相信任何一个开发人员在看到冲突消息时都会沮丧地撕扯头发。试图解决合并冲突是每个开发人员都讨厌的事情,特别是当准备进行生产部署时。而这就是正确的git workflow可以解决的问题。当然,正确的git workflow不能解决所有问题。但这是朝着正确方向迈出的一步。
如何设置git workflow取决于项目、团队的发布时间表、以及团队的规模等, 本文将带你了解5种不同的git workflow、它们的优缺点以及应该在什么时候使用它们。
1. 基本的Git Workflow
最基本的git workflow只有一个分支——master分支。在这个workflow中,所有提交都被直接添加到mastser分支,并部署到staging环境和生产环境中。
除非这是一个小项目,并且你想快速上手, 否则不推荐使用这种workflow:
- 团队协作时会有很多冲突
- 将Bug提交到master的的几率变高
- 很难维护一套干净的代码
2. Git 特性分支 Workflow![](/assets/blank.gif)
Git 特性分支 Workflow适用于多个开发人员协作的情况。假设有一个开发人员正在开发一个新特性,另一个开发人员正在开发第二个特性。如果两个开发人员都在同一个分支工作,并向他们添加提交,这将使代码库变得非常混乱,并产生大量冲突。
为了避免这种情况,这两个开发人员可以从master分支中创建两个独立的分支,完成了自己开发的特性后,就可以将各自的分支合并到master分支,并且无需等待其他特性完成就可以进行部署。
3. Git dev+特性分支 Workflow
这种workflow是开发团队中比较流行的workflow之一。它类似于Git特性分支workflow,但多一个dev分支,该分支是并行添加到master分支的。
在这个workflow中,master分支的代码总是用于部署生产环境。dev分支反映了下一个版本最新交付的开发变更的状态。开发人员从dev分支创建分支,并开发新特性。一旦特性的开发完成,就对它进行测试,然后与dev分支合并,同dev分支的合并的代码一起进行测试,以防重复合并。
4. Gitflow Workflow
Gitflow Workflow 与我们之前介绍的其他workflow也非常相似, 它分为
热修复(hot-fix)分支
热修复分支是唯一从master分支创建并直接合并到master分支而不是dev分支的分支。它仅在必须快速修复生产问题时使用。这个分支的优点是,它允许快速修复生产环境的问题,而不需要等待下一个发布周期。
一旦热修复合并到master分支并部署,它也应该被合并到dev分支和当前的release分支。这样做是为了确保那些fork分支的开发者也可以更新最新的代码。
版本(release)分支
版本分支是在dev分支将所有为发布而开发的特性成功地合并到其中之后从dev分支派生出来的。
只有与此版本相关的代码才会添加到发布分支中,与新特性相关的其他代码则不会添加到版本分支中。
一旦这个分支与master分支合并并部署到生产环境中,也要将它合并到dev分支中,这样当一个新特性从dev分支中派生出来时,它就会使用最新的代码。
在Windows上安装使用这个workflow, 只需要在项目中运行git flow init。
5. Git 分叉(fork)Workflow
分叉workflow在开源软件的团队中非常流行。
流程如下:
- 首先 fork 官方库, 创建一个官方仓库的副本
- 然后开发人员将库clone到本地环境
- 官方库的远程路径添加到本地repo中
- 开发人员在本地创建新特性分支,进行更改并提交。
- 这些更改连同分支一起推送到官方库的副本中
- 请求push到官方库
- 官方库的管理员检查更改, 同意将更改合并到官方库。
5种 Git workflow 简介相关推荐
- Git workflow
Git workflow 大神镇楼: 这人不用说,应该都认识,他基本干了两件事,一个是Linux,一个就是git.每一件事,都在IT史上创建了一个巨大的Tag. Git是什么 Git能干什么? Git ...
- Git workflow工作流及边角知识
Git workflow工作流及边角知识 开篇 workflow工作流 rebase onto reset revert 开篇 Git是个老生长谈的问题了,如何在工作协作中使用Git,不同团队有不同的 ...
- Git的简介与Git详细操作流程
1.Git的简介 分布式和集中式的区别 git是分布式版本控制器 比较有名的版本控制器还有SVN,SVN是集中式的版本控制器. 集中式:集中式的版本库是集中存放在中央服务器的,每次都要从中央服务器取得 ...
- oracle 授权 增删改查权限_linux suid,sgid,sticky-bit三种特殊权限简介
三种特殊权限简介 SUID 当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权. 如果所有者是 root 的话,那么执行人就 ...
- Tool之Git:Git的简介、安装、使用方法之详细攻略
Tool之Git:Git的简介.安装.使用方法之详细攻略 目录 Git简介 Git安装 1.windows系统下安装 2.Ubuntu系统下安装 Git使用方法 1.基本使用方法 Git简介 Git的 ...
- git rebase简介(基本篇)
原文: http://gitbook.liuhui998.com/4_2.html 一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin& ...
- Git使用简介一(入门级)
参考:<第一行代码-Android> 郭霖 Git是一个开源的分布式版本控制工具,功能十分强大,开源项目可以免费托管在GitHUb上,并且用户可以十分轻易的找到海量的开源代码,据说其被 ...
- 实用 Git Workflow
创建分支 分支是 Git 的核心概念,同时 Git Workflow 也是基于分支进行操作. 当你新增功能或修复 bug 时候,新建一个分支是一个不错的选择,这将不会影响主分支 master. 所以你 ...
- STM32中GPIO口八种工作模式简介及LED灯测试
STM32中GPIO口八种工作模式简介及LED灯测试 一.GPIO口八种工作模式 二. LED灯测试 一.GPIO口八种工作模式 在STM32单片机里对于GPIO的配置种类有8种之多,包括4种输入模式 ...
最新文章
- MyBatis 的工作原理,你了解过吗?
- hadoop实战二 单机部署2
- 图片加载之SDWebImage(上)
- mysql中的钱null,mysql 中null总结
- boost::hana::negate用法的测试程序
- shell(希尔排序)
- java map与set的区别_java 集合(list,set,map)三者之间的关系和区别
- confluence统计用户文章_首次,Flink公众号公开一些后台统计数据
- java adt eclipse_Eclipse安装ADT插件
- 用SyncToy进行两台服务器之间文件同步
- 你都用 Python 来做什么?
- 北卡州立大学计算机科学硕士,北卡罗莱纳州立大学计算机科学专业研究生申请条件有哪些?...
- 交叉验证stratified k-fold cv与shuffle等常用cv方法
- SpringBoot(二): 使用Dokcer+SpringCloud+Consul+Fabio搭建微服务
- 外部无法连接部署在linux上的MongoDB
- 笔记本无网络计算机,win10笔记本电脑连接wifi显示无internet的详细处理方法
- ERNIE-ViL-理解
- 19C环境ORA-01035登陆报错处理
- sap hana连接
- 20道高频面试题(含答案),手慢无