Git Flow—Git团队协作最佳实践
一、规范的Git使用
Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高。
实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢失等。
就像代码需要代码规范一样,使用Git进行代码管理同样需要一个清晰的流程和规范, Git Flow就是一个被广泛认可的Git使用最佳实践。
Git Flow是Vincent Driessen提出的一个分支管理的策略,http://nvie.com/posts/a-successful-git-branching-model/,
应用这个规范可以使得版本库的演进保持简洁,主干清晰,各个分支有不同的职责,在很大程度上减少冲突的产生。
二、Git Flow开发流程
Git Flow通过对分支的管理,实现版本迭代的清晰。
这个流程图是应用Git Flow的标准流程,可以看到,不同的分支在产品研发和上线的不同阶段有不同的作用,扮演了不同的角色。
Git Flow不同分支的角色
结合图片,简单介绍一下不同分支的职责。
1.Production分支
这个分支是发布到生产环境的代码,这个分支只能从其他分支合并,不能在这个分支直接修改。
2.Develop分支
这个分支是主开发分支,包含所有要发布到下一个Release的代码,这个主要合并自其他分支,比如Feature分支。
3.Feature分支
Feature 分支主要用来开发一个新的功能,一旦开发完成,合并回Develop分支,并且进入下一个Release,Feature分支可以选择删除或者保留。
4.Release分支
当需要发布一个新Release的时候,基于Develop分支创建一个Release分支,Release分支在测试过程中可能会修改,完成Release后,合并到Master和Develop分支。
5.Hotfix分支
当在Production发现新的Bug时候,需要创建一个Hotfix分支, 完成Hotfix后,合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release。
Git Flow使用原则
- Master分支是线上稳定分支,Release通常用作测试分支,Develop分支是开发应用的主分支
- 所有的功能开发都在Feature分支进行,然后合并到Develop分支
- Release分支发布后出现问题,直接在Release分支修改,避免Develop分支代码污染
三、Git Flow分支协作最佳实践
我们在应用Git Flow的时候,也遇到了一些问题,比如开发结束后,在develop分支进行merge开发分支操作,出现冲突如果不能很好的解决,容易对develop分支的代码造成污染。
下面是实际开发中使用的流程,在Feature分支上合并develop代码,然后合并到develop分支上,流程更加清晰,冲突优先在开发分支解决。
一个开发人员典型的提交流程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// 新建分支
git checkout develop
git pull origin develop
git checkout -b myfeature
// 在分支上开发
git add ***
git commit -m "*****"
// 在分支开发过程中合并develop分支到本分支(先把自己的工作commit到本地)
git checkout develop
git pull origin develop
git checkout myfeature
git merge develop
(如果没有冲突,就继续开发,如果有冲突,执行下面过程)
首先在本地解决冲突,再把冲突解决commit
git add ***
git commit -m "*****"
// 在分支开发结束,需要将本分支合并到develop分支(先把自己的工作commit到本地)
git checkout develop
git pull origin develop
git merge myfeature
(如果没有冲突,就推送到远程)
git push origin develop
(如果有冲突,则解决冲突,再commit,并推送到远程:)
git add ***
git commit -m "*****"
git push origin develop
|
应用Git Flow的目的是更好的进行版本管理和持续集成,有些细节并不一定要遵循这个模型,可以根据团队规模进行简单的调整,适合的才是最好的。
Git Flow—Git团队协作最佳实践相关推荐
- git笔记(团队协作教程,GitHub操作)
git笔记(本地操作教程) git笔记(团队协作教程,GitHub操作) git笔记(IDEA 集成 Git) git笔记(IDEA 集成 GitHub) 自建代码托管平台-GitLab 远程仓库操作 ...
- 云效飞流Flow项目版本管理的最佳实践
简介:飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践 目录 一.分支规约 二.版本号规约 2.1 主版本号(首位版本号) 2.2 ...
- Git代码版本管理命令和团队协作规范---实践版
Git代码版本管理流程和团队协作规范 Git版本管理介绍 git各分支功能介绍 master 分支 develop 分支 feature 分支 release 分支 hotfix 分支 使用规范 ** ...
- Git —— 4、团队协作机制及GitHub操作
目录 1.团队协作机制 1.1.团队内协作 1.2.跨团队协作 2.GitHub 操作 2.1.创建远程仓库 2.2.远程仓库操作 2.2.1.创建远程仓库别名 2.2.2.推送本地分支到远程仓库 2 ...
- Git 学习之团队协作(Gitee实操)
前言 原先都是自己独立开发,所以在协作开发这块的技能有所欠缺,对Git命令的使用还停留在独立开发上,平常用的最多的命令就是: git status git add --all git commit - ...
- 持续交付之基于Git Flow代码分支策略实践
文章目录 一.前言 二.主干开发(TBD) 三.特性开发 1.Git Flow 2.产品分支策略 2.1.基本情况 2.2.分支管理 2.3.分支合并时间 2.4.初始化配置 2.5.迭代开发 2.6 ...
- Git Flow 分支管理简述
概述 Git 是什么 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...
- 项目版本管理的最佳实践:云效飞流Flow篇
简介: 飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践 目录 一.分支规约 二.版本号规约 2.1 主版本号(首位版本号) 2. ...
- mac中使用Sourcetree的git flow
mac中使用Sourcetree的git flow 前言 1.git flow工作流 1.1 什么是git flow 1.2 git flow上的分支 1.2.1 长期分支 1.2.2 短期分支 1. ...
最新文章
- java各种容器内部实现原理
- 你会为情怀买单么?反正我会!
- hdu1521 排列组合
- Windows GPT磁盘GUID结构详解
- 20. C# -- Base, this 关键字
- 微软Azure AspNetCore微服务实战第2期(内附PPT下载)
- oracle:用户购买平台案例分析与优化
- PL/SQL中,declare定义变量和variable定义变量的区别?
- oracle数据库赋权_Oracle角色权限创建用户赋权
- java hibernate状态_Hibernate对象的三种状态
- 算法案例之有效字母异位词
- dirsearch命令组合参考
- 题解 P1004 【方格取数】
- ACE+TAO 通信中间件
- python docx 提取图片_Python提取docx文档中所有嵌入式图片和浮动图片
- Flink【优质】面试题摘录
- selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类
- 玩转微派狼人杀成为高手必看攻略
- CSS浮动与定位 逆战班
- 金蝶云 python脚本调试
热门文章
- MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...
- activiti工作流连接mysql_Activiti工作流 安装myeclipse activiti设计插件并生成数据库表...
- html中失焦事件怎么写的,详解HTML onfocus获得焦点和onblur失去焦点事件
- 数据验证html,JavaScript 表单数据验证
- redis del清除缓存java_删除redis缓存报错
- java多线程循环打印abc,使用java多线程顺序打印“ABCABC”
- python字符串类库_Python 常用类库
- 五种常用的JavaScript自定义对象方式
- python会不会出现内存泄露_Python内存泄漏和内存溢出的解决方案
- python数据库建表_mysql数据表如何创建