我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Git管理工作流有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Git管理工作流有哪些

本篇内容介绍了“Git管理工作流有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

集中式工作流

集中式工作流这种工作方式对于使用过SVN的同学想必会非常的熟悉,让我们思考下在  SVN下的协作体验,不同的开发同学需要依次将本地的修改提交到服务器,如果有冲突就先解决本地的冲突再提交,这个过程中远端的服务器就像是一个集中管理者,管理着所有人的代码提交,所以  SVN的开发协作流程就是典型的集中式工作流。

Git管理工作流有哪些

如果切换到 Git 来维护代码仓,但是开发人员又对 Git 的分支模式不熟悉,能不能用 Git 实现类似的集中式工作流呢?答案是当然可以。

Git管理工作流有哪些

每个开发人员将远程仓库的代码 clone 下来变成了属于自己的本地仓库,提交代码时先提交至本地仓库,然后再推送到远程仓库。

这种模式相比 SVN 只是多了一个本地仓库而已,有了 SVN 的经验开发人员也很快能熟悉这种模式,在前些年有很多公司都是将 Git 作为 SVN  来用的。

从提交记录来看,集中式工作流通常是一条直线往前走,如下图:

Git管理工作流有哪些

集中式代码提交流程

小结:这种模式不推荐大家使用,因为完全没有发挥出 Git 的作用,类似于用倚天剑屠龙刀来切菜,太浪费了。

功能分支工作流

集中式工作流有一个很大的问题,随着团队内人员不断增多,大家每一次提交代码都可能会遇到冲突,提交代码一分钟解决冲突一小时。

为了便于大家并发开展工作,通常会基于 master  主干分支拉取几个特性分支,每个开发人员关注于自己的分支,需要提交代码时直接提交到本地库的特性分支,在合入到主干分支前通常会拉取最新的代码,如果有冲突先在本地解决好冲突,解决完提交  MR 申请将特性分支合入主干分支。

Git管理工作流有哪些

功能分支工作流

在功能分支工作流下,不会直接将代码合入到主干分支(master),通常是通过其他分支提交 MR(Merge  Request),这使得集成一些自动化操作变得简单可行了。

提交 MR 之后团队成员开始围观你写的代码,可以提交检视意见(code review),还可以进行投票(vote),团队 committer  据此合入或者驳回你的 MR。

Git管理工作流有哪些

代码提交流程

新功能大量合并到 master 分支后容易造成 master 分支质量不稳定,不稳定会有什么问题?比如线上突然有个 bug  要解决,可能只需要修改一行代码就能解决,但是 master  分支已经合入了大量新特性,测试人员还没来得及测试,那最稳妥的办法就是将代码回退到上一次发版本的时间节点,基于这个节点再修改一行代码,是不是太麻烦了?

为了解决这些问题,Vincent Driessen大佬基于开发实践总结了一套 Git 分支管理的流程和规范,下面详细介绍一下。

Gitflow 工作流

Gitflow  工作流是目前非常成熟的一个方案,它定义了一个围绕项目发布的严格分支模型,通过为代码研发、项目发布以及维护分配独立的分支来让项目的迭代过程更加地顺畅,不同于之前的集中式工作流以及功能分支工作流,Gitflow  工作流常驻的分支有两个:主干分支 master、开发分支 develop。

和功能分支工作流相比,Gitflow工作流没有增加任何新的概念或命令,它给不同的分支指定了特定的角色,定义它们应该如何、什么时候交互。除了功能分支之外,还为准备发布、维护发布、记录发布分别使用了单独的分支。

Gitflow 常见分支:

  • 开发主分支:master 分支

master 分支的代码是可以直接部署到生成环境的,为了保持稳定性一般不会直接在这个分支上修改代码,都是通过其他分支合并过来的。

  • 开发主分支:develop分支

develop 分支是主开发分支,包含所有要发布到下一个release的代码,主要是由feature分支合并过来的。

  • 临时分支:feature 分支

feature 分支主要是用来开发一个新特性,一旦开发完成会合入 develop 分支,feature 分支也随即删除掉。

  • 临时分支:release 分支

当需要一个发布一个新release版本时,会基于develop分支创建一个release分支,经过测试人员充分测试后再合入 master 分支和  develop 分支。

  • 临时分支:hotfix 分支

当在生成环境发现新的Bug时候,如果需要紧急修复,会创建一个hotfix分支, 充分测试后合入master和develop分支,随后删除该分支。

各分支如何配合工作?

(1)master/develop分支

原则上master分支上所有的commit 都应该打上Tag,因为一般情况下master不存在 直接commit;

devlop分支 是基于 master分支创建的,与 master 分支一样都是主分支,不会被删除。

develop 从 master 拉出来之后会独立发展,不会与 master 直接产生联系。

Git管理工作流有哪些

主分支工作流程

(2)feature 分支

通常一个独立的特性都会基于 develop 拉出一个 feature 分支,feature 分支之间没有任何交互,互不影响。feature  分支一旦开发完成后会立马合入 develop 分支(采用 merge request 或者 pull request),feature  分支的生命周期也随之结束。

Git管理工作流有哪些

feature 分支工作流程

(3)release 分支

通常一个迭代上线会拉一个release 分支,开发人员开发完毕所有的代码都已合入 develop 分支,这时候会基于 develop 分支拉出一个  release 分支,测试人员基于该分支进行测试。

Git管理工作流有哪些

release 分支工作流程

(4)hotfix 分支

hotfix分支基于master分支创建,开发完后需要同时回合到master和develop分支,同时在master上打一个tag。

Git管理工作流有哪些

hotfix 分支工作流程

分支命名规范

团队内部可以约定每个分支的命名样式,这里举个例子,大家可以参考:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. feature分支:以feature_开头,如 feature_order

  3. release分支:以release_开头,如 release_v1.0

  4. hotfix分支:以hotfix_开头,如hotfix_20210117

  5. tag标记:如果是release分支合并,则以release_开头,如果是hotfix分支合并,则以hotfix_开头。

Forking 工作流

Forking 工作流是以 Github 为代表的一种代码协作方式,开发者通过克隆(fork)源仓库进行编写代码,一旦完成会发起 pull  request,源仓库作者可以选择是否接受该 PR。

下面通过 Github 详细讲解 Forking 工作流模式。

随便找一个Github 开源项目,

https://github.com/smileArchitect/JavaMap

右上角有三个按钮:Watch,Star,Fork

Watch 是关注的意思,一旦你点击了之后该项目有任何改动都会第一时间通知到你;

Star 类似于点赞的意思,多给开源项目点个赞,鼓励一下作者;

Fork 本意是分叉,实际上是克隆的意思,点了之后会将该项目拷贝一份到自己的 github 远程仓库中。

Git管理工作流有哪些

fork 示例

在本地执行 git clone 命令将代码克隆到本地,一顿修改操作后提交代码并 push到个人远程仓库中,然后在界面上发起 pull  request,项目的原作者会看到你提交的 PR,根据提交的质量作者可以选择接受或拒绝。

Git管理工作流有哪些

Github 工作流程

Forking 工作流非常适合于类似 Github 这种开源项目,任何一个开发者都可以通过fork + pull request  向项目中贡献代码。

“Git管理工作流有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Git管理工作流有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Git的工作流有哪些

本篇内容主要讲解“Git的工作流有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Git的工作流有哪些”吧!在讲 Git Flow 之前,我们先讲讲别的东西什么是版本?版是指印刷时的版,本就是
2023-07-05

Git的工作流程有哪些

本篇内容主要讲解“Git的工作流程有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Git的工作流程有哪些”吧!一、Git的基本概念在深入讨论Git的工作流程之前,我们先了解一些Git的基本概
2023-07-05

代码管理工作流的方式有哪些

这篇文章主要讲解了“代码管理工作流的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“代码管理工作流的方式有哪些”吧! 集中式工作流集中式工作流这种工作方式对于使用过SVN的同学想必会
2023-06-15

Git工作流程管理经验总结

Git工作流程管理经验总结引言:在软件开发中,版本管理是一个非常重要的环节。而Git作为目前最流行的版本管理工具之一,其强大的分支管理能力使得团队协作更加高效灵活。本文将就Git工作流程管理经验进行总结和分享。一、Git工作流程简介Git支
Git工作流程管理经验总结
2023-11-03

Git工作流程管理实践经验总结

一、引言随着软件开发的不断发展,团队协作和版本控制越来越重要。在这个过程中,Git作为一个分布式版本控制系统被广泛使用,有效地管理和跟踪代码的变动。本文将总结我在实践中使用Git进行工作流程管理的经验和教训,旨在帮助读者更好地了解和应用Gi
Git工作流程管理实践经验总结
2023-11-03

java常用工作流有哪些

Java常用的工作流有以下几种:1. Activiti:Activiti是一个轻量级的工作流引擎,用于执行业务流程。它完全符合BPMN 2.0标准,并提供了一系列的API和工具,用于定义、部署和执行工作流。2. jBPM:jBPM是一个基于
2023-08-31

Git工作流程管理最佳实践经验总结

Git工作流程管理最佳实践经验总结引言:在软件开发过程中,版本控制是一项重要的工作。Git作为一个流行的分布式版本控制系统,已经成为了大多数开发团队的首选工具之一。然而,尽管Git的强大和灵活性,但在实际应用中,仍然存在一些挑战和困惑。本文
Git工作流程管理最佳实践经验总结
2023-11-02

PHP Git 实战:代码管理与协作中的自动化工具有哪些?

git 在 php 中的自动化工具简化了代码管理和协作:git flow:自动化 git flow 工作流程,创建分支、合并请求和发布新版本。phpdotenv:自动加载环境变量,与 git 钩子结合使用。git hooks:使用 php
PHP Git 实战:代码管理与协作中的自动化工具有哪些?
2024-05-13

mysql管理工具有哪些

MySQL管理工具有很多,常见的有:1. phpMyAdmin:一个基于web的MySQL管理工具,易于使用和安装。2. MySQL Workbench:一个功能强大的图形化管理工具,支持多种操作系统。3. Navicat for MySQ
2023-06-12

git分支管理的方法有哪些

这篇文章主要介绍了git分支管理的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇git分支管理的方法有哪些文章都会有所收获,下面我们一起来看看吧。分支管理1 创建分支使用git checkout:$
2023-06-29

java常用工作流框架有哪些

Java常用的工作流框架有以下几种:1. Activiti:Activiti是一个开源的BPM工作流引擎,它提供了一套完整的业务流程管理解决方案,具有易于使用、灵活性高、高性能等特点。2. Camunda:Camunda是一个开源的BPM平
2023-09-25

常用的golang工作流库有哪些

常用的Golang工作流库有以下几个:Cadence:Cadence是Uber开源的一个分布式、可扩展的工作流引擎。它提供了强大的工作流编排和状态管理功能,能够处理复杂的业务逻辑和长时间运行的任务。Temporal:Temporal是一个开
2023-10-25

PHP工作流引擎有哪些优点

灵活性:PHP工作流引擎可以适应不同的业务流程和需求,可以根据实际情况进行定制和扩展。可扩展性:PHP工作流引擎可以与其他系统集成,通过API接口来实现数据的交互和流转。可视化设计:PHP工作流引擎可以通过可视化工具来设计和配置工作流程,不
PHP工作流引擎有哪些优点
2024-02-29

go工作流引擎有哪些优势

go工作流引擎有以下优势:高性能:Go是一种高效的编程语言,具有轻量级的线程(goroutine)和快速的垃圾回收机制,能够处理大量并发请求,提供高性能的工作流处理能力。并发处理:Go语言天生支持并发处理,通过使用goroutine和cha
2023-10-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录