Git中Idea操作git及Git Flow

目录

一、Idea中使用Git

1.idea配置Git和Gitee

2.实践操作

1.将本地项目推送到远程

2.从远程库克隆项目到本地

二、Git Flow

1.什么是Git Flow

2.工作流程

3.实践操作


一、Idea中使用Git

1.idea配置Git和Gitee

第一步:设置git.exe的安装路径

在设置中的版本控制找到Git,设置Path to Git executable的值,点击测试按钮,显示git的版本信息。

第二步:安装Gitee插件

在插件中下载Gitee插件,安装完成后重启idea使其生效。  

第三步:配置Gitee账号

 在设置中的版本控制找到Gitee、点击+选择第一个跳到Gitee网站授权登录

2.实践操作

1.将本地项目推送到远程

点击菜单 VCS -> Share Project On Gitee 输入远程仓库名、勾选是否是私库,最后点击Share按钮将本地项目推送到远程库

最后,可以再Gitee中的仓库里看到刚刚推送的仓库及仓库中项目。

之后,即可在idea中的右键项目选择Git菜单,进行Git三部曲操作(add/commit/push)。

  • 新增项目文件

此时文件为新增状态,以红色状态显示。

  • 保存暂存区

点击保存按钮,新增文件将被保存到暂存区,此时文件为绿色状态。

  • 提交到本地仓库

右键项目,选择Git -> 提交、在弹窗中输入提交信息点击提交,此时项目文件从暂存区真正进入版本库(本地)中,项目文件变成白色(这里要注意如果idea是白色风格,那么文件将会是黑色

  • 修改文件

修改已提交的文件后,此时文件将变成蓝色,蓝色代表已修改状态。

  • 推送和提取

右键项目点击Git -> 推送 将本地项目推送到远程库

右键项目点击Git -> 提取 将远程库代码更新到本地。

2.从远程库克隆项目到本地

打开idea,选择从VCS获取,弹出窗口下选择需要克隆的项目

 

二、Git Flow

1.什么是Git Flow

Git Flow是git的一种工作流程规范,由Vincent Driessen最先提出来,目的是为了解决分支和commit杂乱无章的问题。在实际开发过程中,若多名程序员开发同一个项目时很容易造成代码混乱甚至代码丢失的情况,而合理的运用gitflow规范可以很好地解决这个问题。如果你的公司很重视代码review,那么gitflow更是你的不二之选。

2.工作流程

Git Flow的分支主要分为两大类:主分支和辅助分支。其中主分支包含主要分支和开发分支,而辅助分支包含功能分支、预发分支、热修复分支以及其他自定义分支。

  • 主要分支(Master)

主要分支上存放的是最稳定的正式版本,并且该分支的代码应该是随时可在生产环境中使用的代码。当一个版本开发完毕后,产生了一份新的稳定的可供发布的代码时,主要分支上的代码要被更新。同时,每一次更新,都需要在主要分支上打上对应的版本号。

任何人不允许在主要分支上进行代码的直接提交,只接受其他分支的合入。原则上主要分支上的代码必须是合并自经过多轮测试及已经发布一段时间且线上稳定的预发分支。

  • 开发分支(Develop)

开发分支是主开发分支,其上更新的代码始终反映着下一个发布版本需要交付的新功能。当开发分支到达一个稳定的点并准备好发布时,应该从该点拉取一个预发分支并附上发布版本号。

开发分支接受其他辅助分支的合入,最常见的就是功能分支,开发一个新功能时拉取新的功能分支,开发完成后再并入开发分支。需要注意的是,合入开发的分支必须保证功能完整,不影响开发分支的正常运行。

  • 功能分支(Feature)

功能分支一般命名为 Feature/xxx,用于开发即将发布版本或未来版本的新功能或者探索新功能。该分支通常存在于开发人员的本地代码库而不要求提交到远程代码库上,除非几个人合作在同一个功能分支开发。

功能分支只能拉取自开发分支,开发完成后要么合并回开发分支,要么因为新功能的尝试不如人意而直接丢弃。

  • 预发分支(Release)

预发分支一般命名为 Release/1.2(后面是版本号),该分支专为测试—发布新的版本而开辟,允许做小量级的Bug修复和准备发布版本的元数据信息(版本号、编译时间等)。通过创建预发分支,使得开发分支得以空闲出来接受下一个版本的新的功能分支的合入。

预发分支需要提交到服务器上,交由测试工程师进行测试,并由开发工程师修复Bug。同时根据该分支的特性我们可以部署自动化测试以及生产环境代码的自动化更新和部署。

预发分支只能拉取自开发分支,合并回开发分支和主要分支。

  • 热修复分支(Hotfix)

热修复分支一般命名为Hotfix/1.2.1(后面是版本号),当生产环境的代码(主要分支上代码)遇到严重到必须立即修复的缺陷时,就需要从主要分支上指定的tag版本(比如1.2)拉取热修复分支进行代码的紧急修复,并附上版本号(比如1.2.1)。这样做的好处是不会打断正在进行的开发分支的开发工作,能够让团队中负责功能开发的人与负责修复的人并行、独立的开展工作。

热修复分支只能主要分支上拉取,测试通过后合并回主要分支和开发分支。


3.实践操作

第一步:在Master分支(主分支)上由项目经理开启新项目,搭建框架。(这时可以定义一个初始版本号,例如:v1.0.0)

请手动模拟项目经理操作,在git项目目录下创建aa.txt和bb.txt。

# 初始化git项目
git init
# 将手动添加的项目文件全部提交到暂存区
git add .
# 提交到本地仓库
git commit -m "搭建项目"

第二步:创建Dev分支(开发分支),并切换到Dev分支,编写程序。(这时程序员们开始干活了)

请手动模拟开发人员操作,在git项目目录下创建cc.txt和dd.txt。

# 创建并切换到Dev分支
git checkout -b dev
# 将手动添加的代码文件添加到dev的暂存区
git add .
# 提交到本地仓库
git commit -m "一阶段开发完成"

第三步:若开发阶段性工作完成,准备发布新版本,这时需要创建Release分支(预发布分支),并切换到Release分支,将Dev分支代码合并到该分支(这时测试工程师开始干活了),测试功能并修复Bug后,合并到Master(主分支)和Dev(开发分支)。

# 创建release预发布分支
git branch release
# 查看所有分支情况
git branch -v

这时,请不要急着切换到Release分支,当前任处于dev分支下,请再次手动在git项目中创建ff.txt文件

# 将ff.txt添加到暂存区,如果有很多文件需要添加,则请使用git add .
git add ff.txt
# 提交到本地仓库
git commit -m "ff.txt"

预示着虽然一阶段项目完成了,但是后续开发工作还要继续做,这时再次切换到Release分支上发现并没有ff.txt文件。

# 切换到release分支
git checkout release

这时,测试工程师在Release分支进行代码测试,并修复测试中遇到的Bug。(可以手动修改Release分支下的代码文件,例如:cc.txt和dd.txt等等)

修改完之后,必须进行add/commit操作。

# 添加到Release分支的暂存区
git add .
# 提交到本地仓库
git commit -m "修改release分支的bug"

第四步:切换到Master分支上,将当前的Release分支(预发布分支)上的代码合并到Master分支上,并打上标签v1.0.0。

# 切换Master分支
git checkout master
# 将Release分支上的代码更新到Master分支上
git merge release -m "1.0.0"

第五步:切换到Dev分支上,将当前的Release分支(预发布分支)上的代码合并到Dev分支上。

# 切换Master分支
git checkout dev
# 将Release分支上的代码更新到Dev分支上
git merge release -m "1.0.0"

第六步:删除当前的Release分支。

# 删除Release分支
git branch -d release

第七步:若v1.0.0发布版本在生产阶段遇到了Bug,这时则创建Hotfix分支(热修复分支),并切换到Hotfix分支,将Master主分支上v1.0.0版本的代码合并到Hotfix分支上进行修复并测试,测试完成后若无问题,则将当前Hotfix分支上的代码合并到Master(主分支)和Dev(开发分支)上。

# 创建+切换Hotfix分支
git checkout -b hotfix110
# 将Master分支上V1.0.0版本的代码合并到Hotfix分支
git merge master -m "修复master分支v1.0.0版本的问题"

模拟代码测试及修复操作。

# 将修复代码提交到hotfix分支的暂存区
git add .
# 提交到本地仓库
git commit -m "已在hotfix110分支上修复了代码"

第八步:切换到Master分支,将Hotfix分支上修复测试的代码更新合并到Master分支,并打上标签v1.0.1。

# 切换到Master分支
git checkout Master
# 将hotfix110分支上的代码合并到Master分支
git merge -m "合并hotfix110分支上修复的代码"
# 基于当前修复的代码,在Master分支上打上v1.0.1的标签
git tag -a v1.0.1 -m "v1.0.0问题已修复,标签v1.0.1"

第九步:切换到Dev分支,将Hotfix分支上修复测试的代码更新合并到Dev分支;

# 切换到Dev分支
git checkout dev
# 将hotfix110分支上的代码合并到Dev分支
git merge -m "合并hotfix110分支上修复的代码"

第十步:删除当前的Hotfix分支。

# 删除hotfix110分支
git branch -d hotfix110

如果要开发即将发布版本或未来版本的新功能或者探索新功能,则需要创建Feature分支(功能分支)。在该分支上完成新功能的探索与开发工作,如若没有问题则可以将Feature分支上的代码更新到Dev分支(开发分支)。最后删除该Feature分支。

# 创建+切换Feature分支
git checkout feature
# 将dev分支上的代码合并到feature分支
git merge dev -m "探索新功能"

功能探索成功,则合并到原有的Dev开发分支。

# 切换到dev分支
git checkout dev
# 将feature分支上探索开发成功的功能合并到dev分支
git merge feature -m "功能探索功能合并代码"

不管是功能探索成功,还是失败,最后都删除Feature分支

# 删除feature分支
git branch -d feature

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

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

相关文章

蓝牙BLE学习-安全

1.基本概念 蓝牙标准规定了5种基本的安全服务 身份验证:根据通信设备的蓝牙地址验证其身份。蓝牙不提供本地用户身份验证。保密性:确保只有授权的设备才能访问和查看传输的数据,防止窃听造成的信息泄露。授权(Authorization):在允许设备使用某项服务之前&#xff…

深度测评:ONLYOFFICE 桌面编辑器 v8.0新功能

目录 前言 一、PDF表单处理:提升办公效率 二、RTL(从右到左)支持:满足不同语言习惯 三、Moodle集成:教育行业的新助力 四、本地界面主题:个性化办公体验 五、性能优化与稳定性提升 六、性能与稳定性…

C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(3) 保存表格数据

对上两篇篇的工作C Qt框架开发| 基于Qt框架开发实时成绩显示排序系统(1)-CSDN博客和C Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示-CSDN博客继续优化,增加一个保存按钮,用于保存成绩数据…

不可错过!10款超赞实用插件框架

Cocos 游戏开发十八般武器,尽在 Cocos Store 今天给大家分享10款实用插件与框架! 1. 快闪-Tab标签王(prefab标签栏) 作者:嘉年华(gameWs) 《快闪-标签王》插件,解决了日常开发过程中,经常需要通…

一、Docker部署MySQL

Docker部署MySQL 一、安装Docker二、拉取MySQL镜像1.选择拉取版本2.拉取镜像 三、启动MySQL1.确定好挂载目录2.启动3.查看是否启动4.开启远程访问权限 一、安装Docker 安装教程:https://qingsi.blog.csdn.net/article/details/131270071 二、拉取MySQL镜像 1.选择…

Microsoft OneNote 图片文字提取

Microsoft OneNote 图片文字提取 1. 文件 -> 新建 -> 我的电脑 -> 名称 -> 位置 -> 创建笔记本2. 插入图片​​​3. 复制图片中的文本References 1. 文件 -> 新建 -> 我的电脑 -> 名称 -> 位置 -> 创建笔记本 ​ 2. 插入图片 ​​​3. 复制图片…

【lesson52】 线程概念

文章目录 线程学习前的了解知识理解线程 线程学习前的了解知识 线程在进程内部执行,是OS调度的基本单位 OS可以做到让进程对进程地址空间进行资源的细粒度划分 比如malloc一块内存空间,我们拿到的一般都是起始位置,但是最终位置我们一般都不…

kali系统概述、nmap扫描应用、john破解密码、抓包概述、以太网帧结构、抓包应用、wireshark应用、nginx安全加固、Linux系统加固

目录 kali nmap扫描 使用john破解密码 抓包 封装与解封装 网络层数据包结构 TCP头部结构​编辑 UDP头部结构 实施抓包 安全加固 nginx安全 防止缓冲区溢出 Linux加固 kali 实际上它就是一个预安装了很多安全工具的Debian Linux [rootmyhost ~]# kali resetkali …

一、Docker/安装包部署ClickHouse

Docker/安装包部署ClickHouse 一、docker部署1.安装Docker2.拉取ClickHouse镜像2.1 选择拉取版本2.2 拉取镜像 3.启动ClickHouse3.1 确定好挂载目录3.2 测试环境3.3 生产环境3.1.1 获取配置文件3.1.2 配置文件中添加用户3.1.3 启动容器 4.使用DBeaver连接 二、安装包安装1.准备…

数据结构——线性表

逻辑结构——线性表 1.线性表的定义(逻辑结构) 要点: 相同数据类型有限序列 几个概念: 是线性表中的“第i个”元素线性表中的位序 是表头元素;是表尾元素。 除第一个元素外,每个元素有且仅有一个直接前驱&…

用C语言列出Linux或Unix上的网络适配器

上代码&#xff1a; 1. #include <sys/socket.h> 2. #include <stdio.h> 3. 4. #include <netdb.h> 5. #include <ifaddrs.h> 6. 7. int main() { 8. struct ifaddrs *addresses; 9. if(getifaddrs(&addresses) -1) { 10. printf("…

股票K线简介

股票K线&#xff08;K-Line&#xff09;是用于表示股票价格走势的图形&#xff0c;主要由四个关键价格点组成&#xff1a;开盘价、收盘价、最高价和最低价。K线图广泛应用于股票市场技术分析中&#xff0c;它提供了丰富的信息&#xff0c;帮助分析师和投资者理解市场的行情走势…

微信小程序(四十四)鉴权组件插槽-登入检测

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.鉴权组件插槽的用法 2.登入检测示范 源码&#xff1a; app.json {"usingComponents": {"auth":"/components/auth/auth"} }app.js App({globalData:{//定义全局变量isLoad:false} })…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表&#xff0c;也没有返回值的一个函数 定义一个有参数列表 &#xff0c;有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

七、热身仪式(Warm-Up Rituals)

5.Warm Up Rituals 五、热身仪式 A warm up ritual is your per flight checklist you go through before you start focusing for a big session.It may be checking that you have water, that you don’t need to use the bathroom, that your phone is turned off or you’…

docker 3.1 镜像

docker 3.1 镜像命令 拉取镜像 docker pull debian #从 Docker Hub 拉取名为 debian 的镜像docker pull hello-world #从 Docker Hub 拉入名为 hello-world 的镜像‍ 运行镜像/容器 docker run hello-world ‍ 查看本地所有的镜像 docker images​​ 容器生成镜像…

STM32 cubemx配置DMA+空闲中断接收不定长数据

文章目录 前言一、串口空闲中断二、DMA空闲中断接收不定长数据实现思路三、STM32Cubemx配置DMA空闲中断接收不定长数据四、代码编写总结 前言 本篇文章给大家讲解一下DMA串口空闲中断接收串口不定长数据&#xff0c;之前我们也是讲解过串口接收不定长数据的&#xff0c;那么本…

2024.2.14

二维数组实现杨辉三角形 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {int n;scanf("%d",&n);int a[n][n];for(int i0;i<n;i){for(int j0;j<i;j){if(j0||ij){ a[i][j]1;}else{a[i][j]a[i-1][j]a[i-1][j-…

Netty应用(九) 之 编解码器概念 Netty常见的编解码器

目录 22.编解码器 22.1 编解码的概念 22.2 netty中的编解码 22.3 序列化 23.编解码器在使用过程中的两部分核心内容 23.1 序列化协议&#xff08;编码格式&#xff09;&#xff08;传输数据的格式&#xff09; 23.1.1 Java默认的序列化与反序列化 23.1.2 XML的序列化与反…