项目组GIT操作规范

news2024/11/15 9:20:51

分支规范

在开发过程中,一般会存在以下几种分支:

  • main分支(master)
    master为主分支,也是用于部署生产环境的分支,一般由 dev 以及 fixbug分支合并,任何时间都不能直接修改代码。
  • dev分支
    develop 为开发分支,始终保持最新完成以及bug修复后的代码。一般开发新功能时,feature 分支都是基于 dev 分支下创建的。
  • feature-[功能名称/版本信息]
    feature为需求分支,以 dev 分支为基础创建 feature 分支。每个开发人员基于feature分支,创建自己的开发分支。
  • fixbug-[bug编号]
    线上出现紧急问题时,需要及时修复,以 master 分支为基线,创建 fixbug分支,修复完成后,需要合并到 master 分支和 dev 分支。

注意:

  • 使用git pull定期从远程仓库拉取更新并与本地分支同步,避免出现长时间不更新导致合并时产生大量冲突的情况。
  • 合并代码前,运行git fetch获取远程分支最新状态,然后使用git mergegit rebase进行合并,并解决可能发生的冲突。
  • 定期清理不再需要的功能分支,完成并合并后删除它们以保持分支列表清晰。

常用分支命令

git branch -r  #远程仓库分支
git branch -a  #所有分支列表
git branch #新分支名称
git checkout branchName #切换分支
#创建分支并切换
git checkout -b branchName

#删除本地分支,当分支被推送并合并到远程分支后-d才会删除本地分支
git branch -d localBranchName
#删除远程分支
git push origin --delete remoteBranchName

#推送本地分支到远程分支(远程暂时无对应分支)
git push origin localBranch:remoteBranch
#拉取远程分支到本地(在本地创建分支并自动切换到新分支并且与远程分支建立映射关系)
git checkout -b localBranch origin/remoteName

Commit 提交规范

  1. 提交的日志格式
    每次git提交日志格式为: 类型:描述
    类型:用于说明 commit 的类别,只允许使用下面7个标识。

    • feat:新功能
    • fix:修补bug
    • docs:修改文档
    • style: 格式化代码结构,没有逻辑上的代码修改
    • refactor:重构,即不是新增功能,也不是修改bug的代码变动,比如重命名变量
    • test:增加测试代码,单元测试一类的,没有生产代码的变更
    • chore:构建过程或辅助工具的变动(不会影响代码运行)

    描述:是本次commit的描述,说明白本次提交都干了些啥
    例如:

git commit -m "feat: 新增用户详情页接口"
git commit -m "fix: 修复用户注册时电话号码校验逻辑问题" 
git commit -m "docs: 新增项目Readme 文档"
  1. 提交频率
    • 提交粒度按照功能点进行提交,切记不要一直不提交,积攒一大堆代码再提交;

更新、合并规范

原则:

  1. 下游分支更新上游分支代码用rebase
  2. 上游分支合并下游分支代码用merge
  3. 更新本分支代码用--rebase (如果本分支有多人共同使用开发的时候);
    这样可以消除自动产生的无用merge记录,有利于后续查看开发记录。

下游分支在更新上游分支代码的时候,如果使用merge,会产生一条无用的合并记录,比较影响查看历史,使用rebase则不会。

分场景介绍

目前有个xx需求,由a、b两名同事进行开发分支说明(建立个人开发分支是为了方便做代码review)

  • master:主分支
  • dev:测试分支
  • Feature--xx:订单详情需求分支
  • Feature--xx-a:订单详情a开发分支
  • Feature--xx-b:订单详情b开发分支

master主分支内容
在这里插入图片描述
当前所有分支都基于master分支进行创建,内容与master分支一致。

场景一feature--xx分支代码有个更新,本地feature--xx更新代码。

远程分支新增一个类,如下
在这里插入图片描述

# 目前代码处于feature--xx分支,且都已经本地提交(没提交的可以使用暂存功能) 同步远程库代码变动 
$ git fetch origin 
# 使用rebase进行代码更新代码
$ git pull origin feature--xx --rebase

在这里插入图片描述
备注:

git fetch #拉取代码,需要使用git merge进行合并
git pull #拉取代码,会直接将本地代码更新至远程仓库里面最新的版本
# 也可使用IDEA自带功能(具体不再详述)

场景二feature--xx分支代码有了新代码的更新,a要合并代码。

梳理下思路:

  1. feature--xx-a更新远程分支代码(不更新也行,因为只有a在使用);
  2. 合并origin/feature-xx分支代码,有冲突解决冲突,没有冲突将代码push到服务器;
  3. 发起合并。

远程feature-xx分支新增输出内容
在这里插入图片描述
操作步骤

# 假设所有代码已经都提交,无需进行提交或者暂存代码的操作; 
$ git checkout feature--xx-a 
# 同步远程库代码变动 
$ git fetch origin 
# 使用rebase进行代码合并(合并上层分支到下层) 
$ git rebase origin/feature--xx 
# 如果此时有冲突,解决冲突,并将解决完冲突的代码提交,在执行rebase 即可 
$ git rebase --continue 

合并后如下
在这里插入图片描述

# 合并完之后,push代码,push完之后,a的代码已经到远程feature-xx-a分支了 
$ git push  

# 此时,如果需要进行代码审核,发起一个合并请求即可; 
# 如果不需要进行代码审核,后续操作就是合并到feature--xx分支 
# 切换分支,并更新代码 
$ git checkout feature--xx 

在这里插入图片描述

$ git pull --rebase  
# 合并张三分支代码,并推送远程 
$ git merge feature--xx-a 

在这里插入图片描述

#  git push --set-upstream origin feature--xx
$ git push

分支使用及发版流程

负责人排定发行版计划,并执行发行版控制,注意前/后端的协同。测试版本可根据开发计划,拆解生产版本任务,组织阶段测试。

提测通过后拉分支继续开发、版本内有bug修复后合到已提交版本重新发版。具体流程如下:在这里插入图片描述

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

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

相关文章

Altium Designer封装库和元器件符号库下载与导入教程(SnapEDA 、Ultra Librarian、Alldatasheetcn)

1.AD封装库和元器件符号库下载网址 以下是一些全球热门的Altium Designer封装库和元器件符号库下载网址推荐: Altium Content Vault (现称为Altium Manufacturer Part Search):这是Altium官方提供的元器件库,可以直接在Altium Designer中使用…

Java码农的福音:再也不怕乱码了

即便是Java这样成熟的语言,开发者们也常常会遇到一个恼人的问题——乱码。 本文将深入探讨乱码的根本原因,并针对Java开发中的乱码场景提出有效的解决方案,辅以实战代码,让Java程序员从此告别乱码困扰。 一,字符集的…

文件存储解决方案-阿里云OSS

文章目录 1.菜单分级显示问题1.问题引出1.苹果灯,放到节能灯下面也就是id大于1272.查看菜单,并没有出现苹果灯3.放到灯具下面id42,就可以显示 2.问题分析和解决1.判断可能出现问题的位置2.找到递归返回树形菜单数据的位置3.这里出现问题的原因…

什么是最大路径?什么是极大路径?

最近学习中,在这两个概念上出现了混淆,导致了一些误解,在此厘清。 最大路径 在一个简单图G中,u、v之间的距离 d ( u , v ) min ⁡ { u 到 v 的最短路的长度 } d(u,v) \min \{ u到v的最短路的长度 \} d(u,v)min{u到v的最短路的…

音乐的力量

常听音乐的好处可以让人消除工作紧张、减轻生活压力、避免各类慢性疾病等等,其实这些都是有医学根据的。‍ 在医学研究中发现,经常的接触音乐节 奏、旋律会对人体的脑波、心跳、肠胃蠕动、神经感应等等,产生某些作用,进而促进身心…

Postman基础功能-接口返回值获取

大家好,之前给大家分享关于Postman的接口关联,我们平时在做接口测试时,请求接口返回的数据都是很复杂的 JSON 数据,有着多层嵌套,这样的数据层级在 Postman 中要怎么获取呢? 接下来给大家展示几个获取 JSO…

容联云零代码平台容犀desk:重新定义坐席工作台

在数智化浪潮的推动下,企业亟待灵活适应市场变化、快速响应客户需求,同时还要控制成本并提升效率,传统的软件开发模式因开发周期长、成本高、更新迭代慢等问题,逐渐难以满足企业灵活多变的业务需求。 容犀Desk,观察到…

(1)双指针算法介绍与练习:移动零

目录 双指针算法介绍 练习:移动零 双指针算法介绍 双指针算法常见于数组和双向链表的题型 在数组中,双指针中的指针代表数组元素的下标,而不是真正的指针类型变量 在双向链表中,双指针中的指针即为真正意义上的指针&#xff…

Windows安装Django

1、下载Python程序包 Python程序包官网下载地址Download Python | Python.org,若下载最新版本,有最新版本则下载"Windows installer (64-bit)" 若是下载其他版本,可在下图位置找到相应的版本,然后点击Download.如下图所示: 打开后查看注意事项…

开源连锁收银系统哪个好

针对开源连锁收银系统的选择,商淘云是一个备受关注的候选。商淘云以其功能丰富、易于定制和稳定性等优势,吸引了众多企业和开发者的关注。下面将从四个方面探讨商淘云开源连锁收银系统的优势: 首先,商淘云提供了丰富的功能模块。作…

Retrying,一个神奇优雅的 Python 库

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…

Docker安装Mosquitto

在物联网项目中,我们经常用到MQTT协议,用MQTT协议做交互就需要部署一个MQTT服务,而mosquitto是一个常用的MQTT应用服务, Mosquitto是一个实现了消息推送协议MQTT v3.1的开源消息代理软件。MQTT(Message Queuing Teleme…

AI大模型日报#0515:Google I/O大会、 Ilya官宣离职、腾讯混元文生图大模型开源

导读:欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”(ERNIE 4.0)、“零一万物”(Yi-34B)生成了今日要点以及每条资讯的摘要。 《AI大模型日报》今日要点:谷歌…

Java 自然排序和比较器排序区别?Comparable接口和Comparator比较器区别?

注:如果你对排序不理解,请您耐心看完,你一定会明白的。文章通俗易懂。建议用idea运行一下案例。 1)自然排序和比较器排序的区别? 自然排序是对象本身定义的排序规则,由对象实现 Comparable 接口&#xff…

什么?你设计接口什么都不考虑?

如果让你设计一个接口,你会考虑哪些问题? 1.接口参数校验 接口的入参和返回值都需要进行校验。 入参是否不能为空,入参的长度限制是多少,入参的格式限制,如邮箱格式限制 返回值是否为空,如果为空的时候是…

代码随想录算法训练营第二十九天 | 39. 组合总和、40.组合总和II、131.分割回文串

39. 组合总和 题目链接/文章讲解: 代码随想录 视频讲解:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!_哔哩哔哩_bilibili 解题思路 这里和组合不同的是元素可以重复选取…

2024 Google I/O大会:全方位解读最新AI技术和产品

引言: 2024年的Google I/O大会如期举行,作为技术圈的年度盛事之一,谷歌展示了其在人工智能领域的最新进展。本次大会尤其引人注目,因为它紧随着OpenAI昨天发布GPT-4o的脚步。让我们详细解析Google此次公布的各项新技术和产品&…

【C语言】6.C语言VS实用调试技巧(1)

文章目录 1.什么是 bug2.什么是调试(debug)?3.Debug 和 Release4.VS调试快捷键4.1 环境准备4.2 调试快捷键 5.监视和内存观察5.1 监视5.2 内存 1.什么是 bug bug现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题…

计算机系列之排序算法

20、排序算法 1、直接插入排序(这里以从小到大排序为例) ◆要注意的是,前提条件是前i-1个元素是有序的,第i个元素依次从第i-1个元素往前比较,直到找到一个比第i个元素值小的元素,而后插入,插入…

战网国际服怎么下载 暴雪战网一键下载安装图文教程

战网国际版,或称为Battle.net全球版,是暴雪娱乐构建的一项跨越国界的综合游戏交流平台,它无视地理限制,旨在服务全球每一个角落的游戏爱好者。不同于地区专属版本,国际版为玩家开启了一扇无门槛的大门,让每…