【DevOps】Git 图文详解(九):工作中的 Git 实践

news2024/11/13 9:37:33

本系列包含:

  • Git 图文详解(一):简介及基础概念
  • Git 图文详解(二):Git 安装及配置
  • Git 图文详解(三):常用的 Git GUI
  • Git 图文详解(四):Git 使用入门
  • Git 图文详解(五):远程仓库
  • Git 图文详解(六):Git 利器 - 分支
  • Git 图文详解(七):标签管理
  • Git 图文详解(八):后悔药 - 撤销变更
  • Git 图文详解(九):工作中的 Git 实践

Git 图文详解(九):工作中的 Git 实践

  • 1.Git Flow
  • 2.金屋藏娇 stash
  • 3.拣选提交 cherry-pick

1.Git Flow

Git Flow(Git 工作流程)是指软件项目中的一种 Git 分支管理模型,经过了大量的实践和优化,被认为是现代敏捷软件开发和 DevOps(开发、技术运营和质量保障三者的交集)的最佳实践。

在这里插入图片描述
主分支master,稳定版本代码分支,对外可以随时编译发布的分支,不允许直接 Push 代码,只能请求合并(pull request),且只接受 hotfixrelease 分支的代码合并。

热修复分支hotfix,针对线上紧急问题、Bug 修复的代码分支,修复完后合并到主分支、开发分支。

  • ① 切换到 hotfix 分支,从 master 更新代码;
  • ② 修复 Bug;
  • ③ 合并代码到 dev 分支,在本地 Git 中操作即可;
  • ④ 合并代码到 master 分支。

在这里插入图片描述
发版分支release,版本发布分支,用于迭代版本发布。迭代开发完成后,合并 dev 代码到 release,在 release 分支上编译发布版本,以及修改 Bug(定时同步 Bug 修改到 dev 分支)。测试完成后,此版本可以作为发版使用,然后把稳定的代码 Push 到 master 分支,并打上版本标签。

开发分支dev,开发版本分支,针对迭代任务开发的分支,日常开发原则上都在此分支上面,迭代完成后合并到 release 分支,开发、发版两不误。

在这里插入图片描述
其他开发分支dev-xxx,开发人员可以针对模块自己创建本地分支,开发完成后合并到 dev 开发分支,然后删除本地分支。

2.金屋藏娇 stash

当你正在 dev 分支开发一个功能时,代码写了一半,突然有一个线上的 Bug 急需要马上修改。dev 分支 Bug 没写完,不方便提交,就不能切换到主分支去修复线上 Bug。Git 提供一个 stash 功能,可以把当前 工作区暂存区 未提交的内容 “隐藏” 起来,就像什么都没发生一样。

# 有未提交修改,切换分支时报错
$ git checkout dev
error: Your local changes to the following files would be overwritten by checkout:
        README.md
Please commit your changes or stash them before you switch branches.
Aborting
 
# 隐藏
$ git stash
Saved working directory and index state WIP on main: 2bc012c s
 
# 查看被隐藏的内容
$ git stash list
stash@{0}: WIP on main: 2bc012c s
 
# 比较一下,什么都没有,一切都没有发生过!
$ git diff
 
# 去其他分支修改bug,修复完成回到当前分支,恢复工作区
$ git stash pop

在上面示例中,有未提交修改,切换分支时报错。错误提示信息很明确了,commit 提交或 stash 隐藏:Please commit your changes or stash them before you switch branches.

📢 如果切换分支时,未提交修改的内容没有冲突,是可以成功切换的,未提交修改会被带过去。

指令
描述
git stash把未提交内容隐藏起来,包括未暂存、已暂存。 等以后恢复现场后继续工作
git stash list查看所有被隐藏的内容列表
git stash pop恢复被隐藏的内容,同时删除隐藏记录
git stash save “message”git stash,可以备注说明 message
git stash apply恢复被隐藏的文件,但是隐藏记录不删除
git stash drop删除隐藏记录

📢 当然这里先提交到本地也是可以的,只是提交不是一个完整的功能代码,而是残缺的一部分,影响也不大。

3.拣选提交 cherry-pick

当有一个紧急 Bug,在 dev 上修复完,我们需要把 dev 上的这个 Bug 修复所做的修改 “复制” 到 master 分支,但不想把整个 dev 合并过去。为了方便操作,Git 专门提供了一个 cherry-pick 命令,让我们能复制一个特定的提交到当前分支,而不管这个提交在哪个分支

在这里插入图片描述
如上图,操作过程相当于将该提交导出为补丁文件,然后在当前 HEAD 上重放,形成无论内容还是提交说明都一致的提交。

  • 希望把 dev 分支上的 v7 提交的内容合并到 master,但不需要其他的内容。
  • master 分支上执行指令 git cherry-pick v7,会产生一个新的 v7’ 提交,内容和 v7 相同。
  • 同时更新 masterHEAD,以及工作区。
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

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

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

相关文章

2023年亚太地区数学建模大赛 问题A

采果机器人的图像识别技术 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世界上最大的苹果出口国,全球每两个苹果中就有一个,全球超过六分之一的苹果出口自中国。中国提出了一带一路倡议(BRI&…

Linux - 文件系统 - 理解目录 - 理解 软/硬链接

前言 在上篇博客当中,我们对 文件系统 和 inode 做了初步了解,本博客将在上篇博客的基础之上,对于 文件系统当中的目录进行进步一阐述。 Linux - 进一步理解 文件系统 - inode - 机械硬盘-CSDN博客 目录 一个文件有一个 inode,…

BUUCTF [WUSTCTF2020]find_me 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。 感谢 Iven Huang 师傅供题。 比赛平台:https://ctfgame.w-ais.cn/ 密文: 下载附件,得到一个.jpg图片。 解题思路: 1、得到一张图…

vue3-组件传参及计算属性

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-组件传参及计算属性 目录 vue3中的组件传参 1、父传子 2、子传父 toRef 与 toRefs vue3中…

大数据系列15:lightgbm笔记

1. 安装 建议用conda安装。 首先安装miniconda,在官网下载对应的版本。 然后将系统的python和pip定位到miniconda文件夹下。 然后用conda安装lightgbm,在Mac m2芯片上测试可行。(用pip直接安装通不过编译)。 2. 简单case 将lig…

php xml数据转数组两种方式

目录 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 方法二、使用PHP内置的DOMDocument类来将XML数据转换为数组的方法 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 $xmlData <root><name>John Doe</name>&l…

Cesium 展示——地球以及渲染数据导出(下载)为图片或 pdf

文章目录 需求分析新加需求分析第一种方式第二种方式需求 将 Cesium 球体以及渲染数据导出为 jpg/png/pdf 分析 获取场景 scene 信息,转为image 的 octet-stream 流 进行下载为图片 /*** @todo canvas 导出图片* @param {string} dataurl - 地址* @return {Blob}*/ functio…

杭州银行连接解决方案:集成CRM、用户运营和广告推广系统

自动化与智能化是企业新的增长引擎。在数字化时代&#xff0c;企业需要通过数字化工具来提高效率和效益&#xff0c;这也是杭州银行推出的连接解决方案的初衷。该解决方案集成了CRM、用户运营和广告推广系统&#xff0c;为企业提供全方位的数字化转型支持。 杭州银行连接解决方…

「 高并发系统设计 」 如何提高系统性能

「 高并发系统设计 」 如何提高系统性能 参考&鸣谢 ⾼并发系统如何做性能优化&#xff1f; 玄明Hanko 高并发系统设计和优化的通用方法论 渝言家 文章目录 「 高并发系统设计 」 如何提高系统性能[toc]一、高并发系统设计三大目标高性能高可用可扩展 二、性能优化原则问题导…

【硬核HeyGen平替】在window平台上使用MyHeyGen

最近在研究HeyGen的平替开源项目&#xff0c;然后发现了MyHeyGen这个项目&#xff0c;但是文档上面并没有说明如果在window平台上使用&#xff0c;考虑到非window平台安装显卡驱动什么的比较繁琐&#xff0c;所以尝试硬着头皮干... 前提 开源项目中所需的环境准备要先准备好 1…

qgis添加xyz栅格瓦片

方式1&#xff1a;手动一个个添加 左侧浏览器-XYZ Tiles-右键-新建连接 例如添加高德瓦片地址 https://wprd01.is.autonavi.com/appmaptile?langzh_cn&size1&style7&x{x}&y{y}&z{z} 双击即可呈现 收集到的一些图源&#xff0c;仅供参考&#xff0c;其中一…

中断方式的数据接收

中断接收简介 回顾之前的代码 之前的代码是 等待标志位RXNE位为1才有数据 进而读取数据存放在变量c中 再根据c变量的数据是为0还是为1进而编写灯亮灭的代码 if语句 但这样的代码明显不符合裸机多任务的编程模型 因为在while中为进程 进程执行的时间不能大于5ms 但是while&…

Linux实验四:shell程序设计: shell控制语句

实验目的 进一步巩固shell程序设计语言基本语法&#xff0c;加深对所学知识理解。 实验内容 要求学生掌握以下内容 (1)条件表达式 (2)判断和分支语句 (3)循环语句 (4)函数 实验内容 1 条件表达式 $ test 10 -gt 5 // 算数表达式 10>5 $ echo $? //显示上述表达…

〔004〕虚幻 UE5 像素流部署

✨ 目录 ▷ 启用像素流插件▷ 打包项目▷ 下载环境包▷ 手动下载▷ 安装信令服务器环境▷ 启动信令服务器▷ 设置启动参数▷ 启动程序▷ 网页运行▷ 开启触控界面▷ 启用像素流插件 打开虚幻启动程序,选择 编辑 后点击 插件在插件列表中搜索 pixel streaming 关键字,勾选后重…

杨传辉:从一体化架构,到一体化产品,为关键业务负载打造一体化数据库

在刚刚结束的年度发布会上&#xff0c;OceanBase正式推出一体化数据库的首个长期支持版本 4.2.1 LTS&#xff0c;这是面向 OLTP 核心场景的全功能里程碑版本&#xff0c;相比上一个 3.2.4 LTS 版本&#xff0c;新版本能力全面提升&#xff0c;适应场景更加丰富&#xff0c;有更…

北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(2)设计一个24秒倒计时器

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1 counter_24.v 1.2 divid…

【Flink】Standalone运行模式

独立模式是独立运行的&#xff0c;不依赖任何外部的资源管理平台&#xff1b;当然独立也是有代价的&#xff1a;如果资源不足&#xff0c;或者出现故障&#xff0c;没有自动扩展或重分配资源的保证&#xff0c;必须手动处理。所以独立模式一般只用在开发测试或作业非常少的场景…

Spring Boot集成MyBatis实现多数据源访问的“秘密”

文章目录 为什么需要多数据源&#xff1f;Spring Boot集成MyBatis的基础配置使用多数据源小结 &#x1f389;Spring Boot集成MyBatis实现多数据源访问的“秘密” ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&…

TIDB拓扑结构

TiDB Server&#xff1a;SQL层&#xff0c;负责接受客户端的连接&#xff0c;执行SQL解析和优化&#xff0c;最终生成分布式执行计划。TiDB Server为无状态的&#xff0c;可增加节点负载均衡。 PD (Placement Driver) Server&#xff1a;整个TiDB集群的元信息管理模块&#xf…

在全球碳市场中崭露头角的中碳CCNG

在全球气候治理的大背景下&#xff0c;中国碳中和发展集团有限公司&#xff08;简称中国碳中和&#xff09;正在成为全球碳交易市场的一个重要参与者。随着国际社会对碳排放的日益关注&#xff0c;中国碳中和凭借其在碳资产开发、咨询与管理等领域的深厚积累&#xff0c;正成为…