Git中Idea操作git及Git Flow

news2024/11/28 22:51:25

目录

一、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.coloradmin.cn/o/1448172.html

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

相关文章

预处理详解(上)

1. 预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSIC&…

Linux--目录结构

目录 一、Linux的目录结构二、常用的目录介绍 一、Linux的目录结构 Linux的目录结构是一个树型结构。 Windos 系统可以拥有多个盘符,如C盘,D盘,E盘。 Linux 木有盘符这个概念,只有一个根目录 /(相当于文件夹)&#xf…

掌握C语言文件操作:从入门到精通的完整指南!

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 什么是文件 文件其实是指一组相关数据的有序集合。这个数据集有一个名称&a…

MPLAB V8.92 printf

Compile error “A heap is required, but has not been specified” Set printf function #if 0 //for UART1 int fputc(int ch, FILE *f) { IFS1bits.U2TXIF 0; // if (runConfig.printOn 1) { // usart_data_transmit(USART0, (uint8_t)ch); U2TXREG ch; // while (RESE…

二分查找算法及其简单应用(C语言实现)

目录 二分查找算法介绍 二分查找算法的简单应用 二分查找算法介绍 二分查找算法,指在一组有序的数组内查找数值,查找的数值与查找范围内的中间数值进行比较,如果比中间数值小,则在原范围内的左侧范围内重复与该范围内的中间数值…

RK3568笔记十四:yolov8pose部署

若该文为原创文章,转载请注明原文出处。 本篇参考山水无移大佬文章,并成功部署了yolov8pose在RK3568板子上,这里记录下全过程。 在此特感谢所有分享的大佬,底部附大佬的链接。 一、环境 1、平台:rk3568 2、开发板: …

微信小程序 民宿预订租赁系统uniApp

通过山青水磨APP办理租房相关业务,线上解决预定、退订的业务,旅客在使用时更加灵活,实现了快速找房,在线沟通、便捷租赁等操作,除此以外,还能帮助旅客获取周边资讯、当地特色活动服务,提升旅客的…

C++,stl,函数对象,谓词,内建函数对象

目录 1.函数对象使用 2.谓词 1.一元谓词 2.二元谓词 3.内建函数对象 1.算术仿函数 2.关系仿函数 3.逻辑仿函数 1.函数对象使用 #include<bits/stdc.h> using namespace std;class add { public:int operator()(int v1,int v2){return v1 v2;} };class print { p…

origin技巧

origin技巧 1.去掉白边2.曲线平滑3.合并多层图例3.图例换方向 1.去掉白边 ctrlu 2.曲线平滑 3.合并多层图例 3.图例换方向 图例右键 “图例” 水平排布修改图例字&#xff1a;双击图例修改 https://blog.csdn.net/m0_47746156/article/details/121295151 https://blog.csdn.…

【网站项目】023实验室耗材管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

BUGKU-WEB GET

题目描述 没有提示&#xff0c;就一个get&#xff0c;启动场景看看&#xff1a; 解题思路 显然是PHP语言解读分析代码吧写出你的payload 相关工具 略 解题步骤 进入场景分析代码 $what$_GET[what]; echo $what; if($whatflag) echo flag{****};前两句&#xff1a;使用get…

《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)

文章目录 3.1 区块和交易的结构3.1.1 基础知识3.1.2 重点案例&#xff1a;构建简单的区块链3.1.3 拓展案例 1&#xff1a;验证交易签名生成密钥对签名交易验证签名完整的交易签名与验证演示 3.1.4 拓展案例 2&#xff1a;监听和解析区块链事件代币合约示例&#xff08;Solidity…

HarmonyOS 通过getInspectorByKey获取指定元素高宽等属性

例如 这里 我们有这样一个组件 Entry Component struct Dom {build() {Column() {Row() {Circle({ width: 200, height: 200 }).fill(#20101010)}.id(ES)}.width(100%).height(100%)} }这里 我们就写了个很基本的组件结构 然后 我们写了个 Circle 组件 定义了宽高 然后 如果我…

消息中间件面试篇

目录 消息中间件 RabbitMQ 消息不丢失 生产者确认机制 消息持久化 交换机持久化 队列持久化 消息持久化 消费者确认 消息重复消费 出现的场景 解决方案 每条消息设置一个唯一的标识id 幂等方案&#xff1a;【 分布式锁、数据库锁&#xff08;悲观锁、乐观锁&#…

VMware虚拟机安装openEuler系统(二)(2024)

下面我们进行openEuler系统的一些简单配置。 1. 开启openEuler系统 在VMware Workstation Pro虚拟机软件中找到安装好的openEuler操作系统虚拟机并开启。 等待开启。 2. 安装配置 进入后选择第一个“Install openEuler 20.03-LTS”。 3. 选择系统语言 为虚拟机设置系统语言…

【lesson53】线程控制

文章目录 线程控制 线程控制 线程创建 代码&#xff1a; 运行代码&#xff1a; 强调一点&#xff0c;线程和进程不一样&#xff0c;进程有父进程的概念&#xff0c;但在线程组里面&#xff0c;所有的线程都是对等关系。 错误检查: 传统的一些函数是&#xff0c;成功返回0&…

【Java】零基础蓝桥杯算法学习——二分查找

算法模板一: // 数组arr的区间[0,left-1]满足arr[i]<k,[left,n-1]满足arr[i]>k;Scanner scan new Scanner(System.in);int[] arr {1,2,3,4,5};int left 0,right arr.length-1;int k scan.nextInt();while(left<right) {//leftright时退出循环int mid (leftrigh…

【Linux 02】权限基本概念

文章目录 &#x1f308; Ⅰ 权限概念&#x1f308; Ⅱ 权限管理1. 文件访问者分类 (角色)2. 文件类型和访问权限 (事物属性)3. 文件权限值表示方法 &#x1f308; Ⅲ 权限修改1. chmod 设置文件访问权限2. chown 修改文件拥有者3. chgrp 修改文件或目录的所属组 &#x1f308; …

【ArcGIS Pro二次开发】(79):符号系统_CIMUniqueValueRenderer

CIMUniqueValueRenderer是ArcGIS Pro SDK中的一个类&#xff0c;用于创建唯一值渲染器&#xff08;Unique Value Renderer&#xff09;。 在ArcGIS Pro中长这样&#xff1a; 通过对CIMUniqueValueRenderer的操作&#xff0c;可以对符号系统进行更改&#xff0c;实现很多功能。…

Matplotlib Figure与Axes速成:核心技能一网打尽

Matplotlib Figure与Axes速成&#xff1a;核心技能一网打尽 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333; 一、Figure&#xff08;图形&#xff09;&#x1f333;&#x1f341;1. 创建Figure&#x1f341;&#x1f341;2. 添加Axes&#…