一、规范的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团队协作最佳实践相关推荐

  1. git笔记(团队协作教程,GitHub操作)

    git笔记(本地操作教程) git笔记(团队协作教程,GitHub操作) git笔记(IDEA 集成 Git) git笔记(IDEA 集成 GitHub) 自建代码托管平台-GitLab 远程仓库操作 ...

  2. 云效飞流Flow项目版本管理的最佳实践

    简介:飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践 目录 一.分支规约 二.版本号规约 2.1 主版本号(首位版本号) 2.2 ...

  3. Git代码版本管理命令和团队协作规范---实践版

    Git代码版本管理流程和团队协作规范 Git版本管理介绍 git各分支功能介绍 master 分支 develop 分支 feature 分支 release 分支 hotfix 分支 使用规范 ** ...

  4. Git —— 4、团队协作机制及GitHub操作

    目录 1.团队协作机制 1.1.团队内协作 1.2.跨团队协作 2.GitHub 操作 2.1.创建远程仓库 2.2.远程仓库操作 2.2.1.创建远程仓库别名 2.2.2.推送本地分支到远程仓库 2 ...

  5. Git 学习之团队协作(Gitee实操)

    前言 原先都是自己独立开发,所以在协作开发这块的技能有所欠缺,对Git命令的使用还停留在独立开发上,平常用的最多的命令就是: git status git add --all git commit - ...

  6. 持续交付之基于Git Flow代码分支策略实践

    文章目录 一.前言 二.主干开发(TBD) 三.特性开发 1.Git Flow 2.产品分支策略 2.1.基本情况 2.2.分支管理 2.3.分支合并时间 2.4.初始化配置 2.5.迭代开发 2.6 ...

  7. Git Flow 分支管理简述

    概述 Git 是什么 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...

  8. 项目版本管理的最佳实践:云效飞流Flow篇

    简介: 飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践 目录 一.分支规约 二.版本号规约 2.1 主版本号(首位版本号) 2. ...

  9. 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. ...

最新文章

  1. java各种容器内部实现原理
  2. 你会为情怀买单么?反正我会!
  3. hdu1521 排列组合
  4. Windows GPT磁盘GUID结构详解
  5. 20. C# -- Base, this 关键字
  6. 微软Azure AspNetCore微服务实战第2期(内附PPT下载)
  7. oracle:用户购买平台案例分析与优化
  8. PL/SQL中,declare定义变量和variable定义变量的区别?
  9. oracle数据库赋权_Oracle角色权限创建用户赋权
  10. java hibernate状态_Hibernate对象的三种状态
  11. 算法案例之有效字母异位词
  12. dirsearch命令组合参考
  13. 题解 P1004 【方格取数】
  14. ACE+TAO 通信中间件
  15. python docx 提取图片_Python提取docx文档中所有嵌入式图片和浮动图片
  16. Flink【优质】面试题摘录
  17. selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类
  18. 玩转微派狼人杀成为高手必看攻略
  19. CSS浮动与定位 逆战班
  20. 金蝶云 python脚本调试

热门文章

  1. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...
  2. activiti工作流连接mysql_Activiti工作流 安装myeclipse activiti设计插件并生成数据库表...
  3. html中失焦事件怎么写的,详解HTML onfocus获得焦点和onblur失去焦点事件
  4. 数据验证html,JavaScript 表单数据验证
  5. redis del清除缓存java_删除redis缓存报错
  6. java多线程循环打印abc,使用java多线程顺序打印“ABCABC”
  7. python字符串类库_Python 常用类库
  8. 五种常用的JavaScript自定义对象方式
  9. python会不会出现内存泄露_Python内存泄漏和内存溢出的解决方案
  10. python数据库建表_mysql数据表如何创建