git workflow

分支策略

  • 按分支属性分类
    • 主干分支:master
    • 特性分支:feature-[序号]、fix-[序号]、hotfix-[序号]
    • 开发分支:dev-[序号]-[开发者]
    • 发布分支:release-[版本号]
    • 部署分支:release(正式)、test(测试)、join(联调)、dev(开发)。
  • 按分支存在时间分类
    • 常设分支
      • master
    • 临时分支
      • 除master外的所有分支皆为临时分支
      • 远程临时分支和本地临时分支
      • 远程临时分支:特性分支、发布分支、部署分支
      • 本地临时分支:开发分支
  • 开发分支合并到特性分支时,必须发起 Pull / Merge Requset ,并指定一个人 code review。 !!#ff0000 注意:只有通过审核的代码才能发布到正式环境!!
  • 远程临时分支由发起者追踪和维护, reviewer 负责删除。
  • 所有的开发和迭代都应都应临时分支上。
  • 合并到 master 分支的代码必须打上 Tag(统一由Jenkins打)

分支解释

  • master (主干分支): 始终只接受已发布到线上的分支的回归 ,没有发布现网的分支不能回归master
  • 特性分支:从master切出,每次新功能开发、bug修复、优化等单独保存代码的分支
  • 开发分支:从特性分支切出,开发分支回归特性分支时必须提交合并请求进行代码审核
  • 发布分支:从master切出,确保每次发版是最新现网版本、方便发布版本时组合各特性分支、方便回归master而存在的一个分支
  • 部署分支:从发布分支切出,用户对应各个部署环境的分支,规则:以4套【环境】命名,如:dev,join,test,release
  • 注意事项
    • 所有临时分支都是从master直接或间接切出,所有临时分支都将回归到master或者丢弃
    • 发布分支必须从master主干checkout,然后合并各特性分支代码到该分支
    • 只有部署分支不需要回归。
  • 临时分支
    • 本地临时分支主要用于迭代、bug修复
    • 远程临时分支主要用于发起 Pull / Merge Requset,合并代码后删除。
    • 如多人开发迭代,可共同商量创建远程临时开发分支便于代码交换,临时维护。
    • 禁止非管理员删除远程临时分支

Pull / Merge Request

代码合并到特性分支:

1.将需要合并到本地开发分支 push 到 gitlab。
2.进入工程 -> merge request -> create new merge request 。
3.选择源分支、目标分支,确定。
4.review 负责人进入 merge request,确认没有问题之后选择 Auto Merge(或者手动在本地合并之后再 push 到 gitlab),并关闭这个 merge request,完成。
5.如果发现问题那么在有问题的行下注释,并提醒 request 的发起人及时修改。
6.删除本地临时分支,本地特性分支更新到最新状态。

Code Review

  • 提交 Pull / Merge Request 时, Commit 和 Message 要足够清晰详细。 切记,如果一次提交的内容包含很多 Commit,请不要使用自动生成的描述。 请用简短且足够说明问题的语言(理想是控制在3句话之内)来描述:

    !!!#eeeeee 你改动了什么,解决了什么问题,需要代码审查的人留意那些影响比较大的改动。特别需要留意,如果对基础、公共的组件进行了改动,一定要另起一行特别说明。!!!
  • 审核人员邀请原则:项目参与人员 & 团队同事 & 团队 Leader。(对项目足够了解,对项目足够了解,对项目足够了解,重要的事情说三遍);
  • 评论中至少出现一个 lgtm 且保证代码评审通过之后 Pull / Merge Request 才可以被合并;(注:lgtm 即 looks good to me 的缩写)

git命令使用规则

1.禁止使用pull命令从feature或master分支拉最新代码,必须使用fetch,rebase命令;
2.合并开发分支到临时组合分支,必须使用merge命令,不允许使用rebase命令;
3.不允许在不同的分支上同时开发相同的功能

开发迭代工作流示例

0.创建功能开发分支

  • 从gitlab上切出特性开发分支(此步骤在协调开发时需要,如个人开发则直接从1开始即可)
  • 并设置特性分支保护。

1.创建本地临时开发分支(dev-[特性序列号]-[开发者])

git fetch --all
git checkout feature-001
git checkout -b dev-001-Adam

2.发布分支-联调(join)

# 把代码合并到联调环境部署分支(join)进行部署
git checkout dev
git merge dev-001-Adam
git push origin dev

3.进入Jenkins找到相应job部署到开发联调环境

  • 如中间解决bug,重复2和3
  • 始终在本地临时开发分支上修改代码 dev-001-Adam

4.测试

# 把代码合并到开发环境部署分支(test)进行部署
git checkout test
git merge dev-001-Adam
git push origin test

5.进入Jenkins找到相应job部署到测试环境

  • 如中间解决bug,重复4和5
  • 始终在本地临时开发分支上修改代码 dev-3.5.3.2

6.创建合并请求

git checkout dev-001-Adam
git log
# 修改过多的、乱七八糟提交记录
# 注意 git reset 一定要加--soft,不然代码将被还原无法恢复,等于工作白干
git reset --soft <commit-id(在git log 中查看你是从master分支哪条提交记录切的分支,就回到那个提交记录)>
# 推送本地临时开发分支到远程仓库,方便创建合并请求
git push origin dev-001-Adam
  • 进入gitlab,操作查看 !!!#cccccc Pull / Merge Request!!!

7.code reviewer 合并请求,删除远程临时开发分支





 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何阅读“计算机界三大神书”之一 ——《计算机程序的构造和解释》SICP

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

如何使用 @font-face 和 font-display 在 CSS 中定义自定义字体

介绍 font-face 是一个 CSS at-rule&#xff0c;用于定义自定义字体。通过 font-face&#xff0c;您可以提供一个路径到与您的 CSS 文件托管在同一服务器上的字体文件。这个规则已经存在了相当长的时间&#xff0c;但是有一个更新的属性 font-display&#xff0c;它带来了新的…

STM32CubeMX学习笔记17--- FSMC

1.1 TFTLCD简介 TFT-LCD&#xff08;thin film transistor-liquid crystal display&#xff09;即薄膜晶体管液晶显示器。液晶显示屏的每一个像素上都设置有一个薄膜晶体管&#xff08;TFT&#xff09;&#xff0c;每个像素都可以通过点脉冲直接控制&#xff0c;因而每个节点都…

论文阅读:Scalable Diffusion Models with Transformers

Scalable Diffusion Models with Transformers 论文链接 介绍 传统的扩散模型基于一个U-Net骨架&#xff0c;这篇文章提出了一种新的扩散模型结构&#xff0c;将U-Net替换为一个transformer&#xff0c;并将这种结构称为Diffusion Transformers (DiTs)。他们还发现&#xff…

python77-Python的函数参数,个数可变参数

很多编程语言都允许定义个数可变的参数,这样可以在调用函数时传入任意多个参数。Python当然也不例外,Python 允许在形参前面添加一个星号(*),这样就意味着该参数可接收多个参数值,多个参数值被当成元组传入。下面程序定义了一个形参个数可变的函数。 # !/usr/bin/env pyth…

数据分析 - 面经 - 联蔚数科

2024.1.9 面试 Boss直聘沟通 先简单做下自我介绍吧 你项目中设计的技术选型&#xff0c;你都有使用过是吗&#xff1f; 这个项目的团队规模介绍一下 在数据部分&#xff0c;详细讲一下主要工作&#xff0c;在数据采集&#xff0c;处理等方面 这些工具是学校教的呢&#x…

阿里云服务器使用教程_2024建站教程_10分钟网站搭建流程

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

requests模块的其他方法

requests模块的其他方法 学习目标 掌握requests中cookirJar的处理方法掌握requests解决https证书错误的问题掌握requests中超时参数的使用掌握retrying模块的使用 1 requests中cookirJar的处理方法 使用request获取的resposne对象&#xff0c;具有cookies属性&#xff0c;能够…

Vscode连接远程服务器失败解决方案

一、 could not establish connection to “XXX” 尝试使用Remote-SSH插件连接远程的服务器&#xff0c;但是配置显示出错&#xff0c;端口显示试图写入的管道不存在&#xff0c;弹出窗口显示could not establish connection to “XXX” 二、检查Windows的OpenSSH 1.检索是否…

Java中注解@RequestParam 和 @ApiParam详解

一、RequestParam 和 ApiParam的常用属性 RequestParam 和 ApiParam 是在 Spring MVC 控制器方法中使用的注解&#xff0c;它们分别服务于不同的目的&#xff1a; RequestParam RequestParam 是 Spring MVC 中用来处理 HTTP 请求参数的注解&#xff0c;主要用于绑定请求中的查…

数据分析项目[开发中]

学习进度记录&#xff1a; 12.7&#xff1a; 教程链接&#xff1a;智能 BI 项目教程(一) (yuque.com) 前端&#xff1a; Ant Design Pro&#xff1a;开始使用 - Ant Design Pro​​​​​​ 然后安装依赖 yarn install 去除不需要的&#xff1a; 移除国际化 【报错】 …

【数据结构与算法】二分查找题解(二)

这里写目录标题 一、81. 搜索旋转排序数组 II二、167. 两数之和 II - 输入有序数组三、441. 排列硬币四、374. 猜数字大小五、367. 有效的完全平方数六、69. x 的平方根 一、81. 搜索旋转排序数组 II 中等 已知存在一个按非降序排列的整数数组 nums &#xff0c;数组中的值不必…

Linux运维_Bash脚本_构建安装ReadLine-6.2.4(setup.py)

Linux运维_Bash脚本_构建安装ReadLine-6.2.4(setup.py) Bash (Bourne Again Shell) 是一个解释器&#xff0c;负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件&#xff0c;并于 1989 年发布的免费软件&#xff0c;作为 Sh (Bourne Shell) 的替代品。 您可…

【Linux】iftop命令详解

目录 一、iftop简介 二、安装iftop命令 2.1 命令查看测试环境系统信息 2.2 查看iftop版本与命令帮助 三、iftop的基本使用 3.1 直接使用iftop命令 3.2 iftop的显示说明 3.3 指定监控某块网卡 3.4 显示某个网段进出封包流量 3.5 按照流量排序 3.6 过滤显示连接 3.7 …

米酒生产加工污水处理需要哪些工艺设备

米酒生产加工过程中产生的污水是一项重要的环境问题&#xff0c;需要采用适当的工艺设备进行处理。下面将介绍一些常用的污水处理工艺设备。 首先&#xff0c;生产过程中的污水需要进行初级处理&#xff0c;常见的设备包括格栅和砂池。格栅用于去除污水中的大颗粒杂质&#xff…

穿越程序员的迷宫:前端花园、后端洞穴与数据科学的密室

穿越程序员的迷宫&#xff1a;前端花园、后端洞穴与数据科学的密室 当你步入程序员的职业赛道&#xff0c;就像踏入一座错综复杂的迷宫。这座迷宫中&#xff0c;有前端的美丽花园&#xff0c;后端的黑暗洞穴&#xff0c;还有数据科学的神秘密室。每一个转角都可能藏着新的机遇…

金相显微镜(金相镜)主要用于材料金相分析 我国市场集中度较低

金相显微镜&#xff08;金相镜&#xff09;主要用于材料金相分析 我国市场集中度较低 金相显微镜又称为金相镜&#xff0c;是指通过光学放大&#xff0c;对材料显微组织、低倍组织和断口组织等进行分析研究和表征的光学显微镜。金相显微镜通常由目镜、物镜、照明系统、旋转台等…

Unity 和 UE 的 .gitignore 文件

各种.gitignore版本 点击跳转 Unity .gitignore 模版 # This .gitignore file should be placed at the root of your Unity project directory # # Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore # /[Ll]ibrary/ /[Tt]emp/ /[Oo]bj/ /[Bb…

视频监控平台EasyCVR+4G/5G应急布控球远程视频监控方案

随着科技的不断发展&#xff0c;应急布控球远程视频监控方案在公共安全、交通管理、城市管理等领域的应用越来越广泛。这种方案通过在现场部署应急布控球&#xff0c;实现对特定区域的实时监控&#xff0c;有助于及时发现问题、快速响应&#xff0c;提高管理效率。 智慧安防视…

idea步过,步入,步出,详解

在软件开发中&#xff0c;"Idea"通常指的是JetBrains公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于编写、调试和运行各种编程语言的应用程序。下面是对"Idea"中的步过、步入和步出的详细解释&#xff1a; 步过&#xff08;Step …