git的版本控制流程

news2024/12/23 0:44:13

1、git是一款版本控制工具

例如我们常用的淘宝,每次升级,版本号就会加一。那么我们怎么控制版本号呢? --使用git。

2、最常使用的git指令

git add . 暂存
git commit -m"***" 提交到本地
git pull 将远程仓库代码下拉到本地
git push 提交到远程仓库

不建议使用【Git Bash】中去输入指令,使用idea 中以及集成好的三个按钮更加快捷方便。

0

从左到右依次是【git pull】拉项目、【commit】暂提交到本地、【git push】提交到远程。

注意:使用最左侧git pull拉项目时,会有Merge和Rebase两个选项,更推荐使用Rebase。Rebase的分支管理比较清晰。

merge:将在子分支的所有提交记录成一次commit,保留在记录中。(下图的E即为该记录)

rebase:不会保留commit记录,直接将分支中的内容排到master的记录之后。

0

merge操作后:

0

rebase操作后:

0

git Merge 和 git Rebase比较

  1. git merge 是将当前分支的提交放在merge分支的前面,而igit rebase是将当前分支的提交放到reabse分支的后面
  2. git merge会在最后增加一个merge的提交记录,而git rebase不会额外增加提交记录
  3. git merge合并之后提交记录是非常复杂的,而使用git rebase合并之后提交记录是线性的
  4. 使用git merge合并之后就不能再回退自己的提交代码了,如果回退则会降merge的内容一同回退了,而git rebase在合并之后可以继续回退自己的提交,而从rebase合进来的代码不受影响
  5. 很明显,dev开发分支适合使用git rebase,r而master主分支则非常适合git merge
  6. master主分支如果使用git rebase的后果是改变了提交历史,比如多人合作时后使用rebase的必须将前面使用过rebase的代码合到自己的前面,导致跟拉出来分支的时候提交历史不一样了,从而会带来各种比较痛苦的提交体验

3、切换分支

当我们本地有文件没有commit,去切换分支的时候(弹框选择Smart Checkout),这笔改动不会因为切换分支而变化。也就是说如果在没有提交的情况下切换分支,你写的东西不会改变。但如果你已经提交了这次改动,那么切换分支后被改动的地方就会切换成新分支的内容。

4、git版本控制流程

ci/cd是大多数公司选择的一套开发流程。

首先有四个特性分支

  • dev分支,对应开发环境(属于程序员开发的,怎么折腾都没事)
  • test分支,对应测试环境
  • pre/release分支,对应预生产环境
  • master分支,对应生产环境

0

  • 当开发新功能时从master拉取并创建一个以feature开头的新分支,例如叫做feature_20230301,这时代码与master相同,在此基础上进行开发。
  • 开发完之后将feature代码merge到dev分支,此时代码便处于开发环境。
  • 如果此时代码自己测试没问题,就将feature代码再merge到测试环境下,交给测试去测。
  • 测试环境通过后才能将feature代码merge到master分支。
  • 再将master代码merge到release预生产,这时你的代码就到达了预生产阶段,而这样做能够使预生产部署的代码来自master分支。
  • 当预生产验证没问题后就可以发布到生产了。

当开发下一个功能时再次从master拉取新分支,重复上边流程,形成一个循环。

注意:

1、所有的改动都是由feature这个小的开发分支去合并。

      为什么不由dev开发分支去合并?

      ----因为可能会出现自测不通过的分支提交到开发分支,那么这笔错误代码就会进入测试环境。

2、所有特性分支不允许push,能push只有feature这个小的开发分支。(方便代码review,merge在小组工作内是需要组长审批的)

hotfix分支

如果master分支去生产了,突然出现异常,需要紧急提一个 hotfix_xxxx 去修复这次报错。接下来按照公司需求,例如直接合并预生产,再合并到master。

0

总结

dev:开发环境,从feature去merge

test:测试环境,从feature去merge

pre:预生产环境,从master去merge,为了验证master代码

master:生产环境,从feature去merge

feature:开发分支----小功能,创建的时候,从master拉取

hotfix:bug修复分支,从master拉取

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

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

相关文章

基于GAN的多尺度门合并多模态MRI图像合成

Multi-Modal MRI Image Synthesis via GAN With Multi-Scale Gate Mergence 基于GAN的多尺度门合并多模态MRI图像合成背景贡献实验方法生成器gate mergence (GM) strategy(门控融合策略)判别器 损失函数Thinking 基于GAN的多尺度门合并多模态MRI图像合成…

从零开始部署一个网站详细图文教程——腾讯云的服务器、SSL证书,阿里云的域名,七牛云的对象存储、CDN等

文章目录 前期准备连接服务器配置Golang环境安装配置MySQL安装配置Redis安装配置Nginx安装Node域名解析SSL证书下载启动项目配置CDN加速总结 前期准备 云服务器(必备)、已经备案的域名(必备),已签发的SSL证书&#xf…

plt创建指定色系

1、创建不连续色系 import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap# 定义颜色的RGB值 colors [(0.2, 0.4, 0.6), # 蓝色(0.8, 0.1, 0.3), # 红色(0.5, 0.7, 0.2),(0.3,0.5,0.8)] # 绿色# 创建色系 cmap ListedColormap(colors)# 绘制…

STM32USART+DMA实现不定长数据接收/发送

STM32USARTDMA实现不定长数据接收 CubeMX配置代码分享实践结果 这一期的内容是一篇代码分享,CubeMX配置介绍,关于基础的内容可以往期内容 夜深人静学32系列11——串口通信夜深人静学32系列18——DMAADC单/多通道采集STM32串口重定向/实现不定长数据接收 …

3D点云目标检测:VoxelNex解读

VoxelNext 通用检测器 vs VoxelNext一、3D稀疏卷积模块1.1、额外的两次下采样消融实验结果代码 1.2、稀疏体素删减消融实验:代码 二、稀疏体素高度压缩代码 三、稀疏预测head 通用检测器 vs VoxelNext 一、3D稀疏卷积模块 1.1、额外的两次下采样 使用通用的3D spa…

2023年亚太杯数学建模C题新能源汽车(思路模型代码)

一、翻译 新能源汽车是指采用先进的技术原理、新技术和新结构,以非常规车用燃料(非常规车用燃料是指汽油和柴油以外的燃料(非常规车用燃料是指汽油和柴油以外的燃料),并集成了汽车动力控制和驱动等先进技术的汽车。新能源汽车包括…

Gitee 之初体验(上)

我们在项目开发或者自己学习的时候,总会存在这样的问题: 在一台电脑上编写完代码,想要再另外一台电脑上再去写,再或者和其他人一起协作等等场合,代码传来传去很麻烦。 这个时候,我们就可以去使用代码管理工…

在java java.util.Date 已知逝去时间怎么求年月日 数学计算不用其他方法

在Java中,使用java.util.Date类已知逝去时间求年月日的方法如下: 首先,获取当前时间和逝去时间之间的毫秒数差值,可以使用Date类的getTime()方法获得时间戳。 将毫秒数转换为秒数,并计算出总共的天数。 根据总共的天…

计算机网络:应用层(上篇)

文章目录 前言一、应用层协议原理1.网络应用的体系结构2.进程通信 二、Web与HTTP1.HTTP概况2.HTTP连接3.HTTP请求报文4.用户-服务器状态:cookies5.Web缓存(代理服务器) 三、FTP:文件传输协议1.FTP:控制连接与数据连接分…

ClassNotFoundException: org.apache.hive.spark.client.Job

hive使用的是3.13版本,spark是3.3.3支持hadoop3.x hive将engine从mr改成spark,通过beeline执行insert、delete时一直报错,sparkTask rpc关闭, 查看yarn是出现ClassNotFoundException: org.apache.hive.spark.client.Job。 开始…

怎么一键批量转换PDF/图片为Excel、Word,从而提高工作效率?

在处理大量PDF、图片文件时,我们往往需要将这些文件转换成Word或Excel格式以方便编辑和统计分析。此时,金鸣表格文字识别大师这款工具可以发挥巨大作用。下面,我们就来探讨如何使用它进行批量转换,以实现高效处理。 一、准备工作…

linux服务器环境搭建(使用yum 安装mysql、jdk、redis)

一:yum的安装 1:下载yum安装包并解压 wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz tar xvf yum-3.2.28.tar.gz 2.进入yum-3.2.28文件夹中进行安装,执行安装指令 cd yum-3.2.28 sudo apt install yum 3.更新版本 yum check-update yum update yum cle…

(一)C语言概述

文章目录 一、C语言1、计算机结构组成 二、第一个C语言程序:hello world1、编写C语言代码:hello.c2、通过gcc编译C代码(1)gcc编译器介绍(2)Window平台中gcc环境配置 3、代码分析(1)#…

基础课14——语音识别

ASR 是自动语音识别(Automatic Speech Recognition)的缩写,是一种将人类语音转换为文本的技术。ASR 系统可以处理实时音频流或已录制的音频文件,并将其转换为文本。它是一种自然语言处理技术,广泛应用于许多领域&#…

C++ :运算符重载

运算符重载: 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 运算符的重载实际是一种特殊的函数重载,必须定义一个函数,并告诉C编译器,当遇到该重载的运算符…

每日一练2023.11.30——验证身份【PTA】

题目链接 :验证身份 题目要求: 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5&a…

万界星空科技/仓库管理WMS系统/免费仓库管理系统

仓库管理(仓储管理),指对仓库及仓库内部的物资进行收发、结存等有效控制和管理,确保仓储货物的完好无损,保证生产经营活动的正常进行,在此基础上对货物进行分类记录,通过报表分析展示仓库状态、…

HarmonyOS4.0 ArkUI组件

目录 简介 搭建开发环境 ArkUI基础组件 Image组件 Text组件 TextInput Button Slider 简介 HarmonyOS 4.0的ArkUI组件是一套UI开发框架,提供开发者进行应用UI开发时所必须的能力。在ArkUI中,组件是界面搭建与显示的最小单位,开发者通过…

传统算法:使用 Pygame 实现线性查找

使用 Pygame 模块实现了线性查找的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过线性查找算法对数组进行查找,动画效果可视化每一步的变化。在查找的过程中,程序逐个遍历数组元素,如果找到目标值,将相应的元素高…

java-Swing界面简析

一、简析: 调用java提供的 java.swing包下的各种类可以实现界面中的各种组件(比如输入框、密码框按钮、单选框、复选框等) 二、java.swing包的关键类: 顶层容器:Jframe(窗口) 中间容器:Jpanel(面板) 基本控件: I…