相信任何一个开发人员在看到冲突消息时都会沮丧地撕扯头发。试图解决合并冲突是每个开发人员都讨厌的事情,特别是当准备进行生产部署时。而这就是正确的git workflow可以解决的问题。当然,正确的git workflow不能解决所有问题。但这是朝着正确方向迈出的一步。

如何设置git workflow取决于项目、团队的发布时间表、以及团队的规模等, 本文将带你了解5种不同的git workflow、它们的优缺点以及应该在什么时候使用它们。

1. 基本的Git Workflow


最基本的git workflow只有一个分支——master分支。在这个workflow中,所有提交都被直接添加到mastser分支,并部署到staging环境和生产环境中。

除非这是一个小项目,并且你想快速上手, 否则不推荐使用这种workflow:

  • 团队协作时会有很多冲突
  • 将Bug提交到master的的几率变高
  • 很难维护一套干净的代码

2. Git 特性分支 Workflow

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在开源软件的团队中非常流行。
流程如下:

  1. 首先 fork 官方库, 创建一个官方仓库的副本
  2. 然后开发人员将库clone到本地环境
  3. 官方库的远程路径添加到本地repo中
  4. 开发人员在本地创建新特性分支,进行更改并提交。
  5. 这些更改连同分支一起推送到官方库的副本中
  6. 请求push到官方库
  7. 官方库的管理员检查更改, 同意将更改合并到官方库。

5种 Git workflow 简介相关推荐

  1. Git workflow

    Git workflow 大神镇楼: 这人不用说,应该都认识,他基本干了两件事,一个是Linux,一个就是git.每一件事,都在IT史上创建了一个巨大的Tag. Git是什么 Git能干什么? Git ...

  2. Git workflow工作流及边角知识

    Git workflow工作流及边角知识 开篇 workflow工作流 rebase onto reset revert 开篇 Git是个老生长谈的问题了,如何在工作协作中使用Git,不同团队有不同的 ...

  3. Git的简介与Git详细操作流程

    1.Git的简介 分布式和集中式的区别 git是分布式版本控制器 比较有名的版本控制器还有SVN,SVN是集中式的版本控制器. 集中式:集中式的版本库是集中存放在中央服务器的,每次都要从中央服务器取得 ...

  4. oracle 授权 增删改查权限_linux suid,sgid,sticky-bit三种特殊权限简介

    三种特殊权限简介 SUID 当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权. 如果所有者是 root 的话,那么执行人就 ...

  5. Tool之Git:Git的简介、安装、使用方法之详细攻略

    Tool之Git:Git的简介.安装.使用方法之详细攻略 目录 Git简介 Git安装 1.windows系统下安装 2.Ubuntu系统下安装 Git使用方法 1.基本使用方法 Git简介 Git的 ...

  6. git rebase简介(基本篇)

    原文: http://gitbook.liuhui998.com/4_2.html 一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin& ...

  7. Git使用简介一(入门级)

      参考:<第一行代码-Android> 郭霖 Git是一个开源的分布式版本控制工具,功能十分强大,开源项目可以免费托管在GitHUb上,并且用户可以十分轻易的找到海量的开源代码,据说其被 ...

  8. 实用 Git Workflow

    创建分支 分支是 Git 的核心概念,同时 Git Workflow 也是基于分支进行操作. 当你新增功能或修复 bug 时候,新建一个分支是一个不错的选择,这将不会影响主分支 master. 所以你 ...

  9. STM32中GPIO口八种工作模式简介及LED灯测试

    STM32中GPIO口八种工作模式简介及LED灯测试 一.GPIO口八种工作模式 二. LED灯测试 一.GPIO口八种工作模式 在STM32单片机里对于GPIO的配置种类有8种之多,包括4种输入模式 ...

最新文章

  1. MyBatis 的工作原理,你了解过吗?
  2. hadoop实战二 单机部署2
  3. 图片加载之SDWebImage(上)
  4. mysql中的钱null,mysql 中null总结
  5. boost::hana::negate用法的测试程序
  6. shell(希尔排序)
  7. java map与set的区别_java 集合(list,set,map)三者之间的关系和区别
  8. confluence统计用户文章_首次,Flink公众号公开一些后台统计数据
  9. java adt eclipse_Eclipse安装ADT插件
  10. 用SyncToy进行两台服务器之间文件同步
  11. 你都用 Python 来做什么?
  12. 北卡州立大学计算机科学硕士,北卡罗莱纳州立大学计算机科学专业研究生申请条件有哪些?...
  13. 交叉验证stratified k-fold cv与shuffle等常用cv方法
  14. SpringBoot(二): 使用Dokcer+SpringCloud+Consul+Fabio搭建微服务
  15. 外部无法连接部署在linux上的MongoDB
  16. 笔记本无网络计算机,win10笔记本电脑连接wifi显示无internet的详细处理方法
  17. ERNIE-ViL-理解
  18. 19C环境ORA-01035登陆报错处理
  19. sap hana连接
  20. 20道高频面试题(含答案),手慢无

热门文章

  1. 食品类目如何打造爆款?
  2. 中国锂电池正极材料行业产量需求及投资状况分析报告2021年版
  3. 2022软考网络工程师学习笔记——计算机组成与结构(Day2)
  4. c语言和python先学哪个好,python和c语言先学哪个
  5. c语言和python实用性_C语言和Python语言,那个更好?
  6. 第11章 WebShell检测
  7. 微信小程序—1、基本数据类型
  8. Redis未授权访问攻击场景分析与防御
  9. 【CCCC】L3-008 喊山 (30分),BFS搜索最长路,水题
  10. 微服务架构和分布式架构的区别