项目组GIT操作规范

分支规范

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

  • 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.hqwc.cn/news/701949.html

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

相关文章

C++ | Leetcode C++题解之第89题格雷编码

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> grayCode(int n) {vector<int> ret(1 << n);for (int i 0; i < ret.size(); i) {ret[i] (i >> 1) ^ i;}return ret;} };

嵌入式学习——Shell(流指针、文件读写函数)——day20

1. 标准IO和文件IO的区别 1. 标准IO是一种有缓存的IO形式&#xff08;接收了一部分内容后给到linux内核中&#xff09; 2. 文件IO是一种没有缓存的IO形式&#xff08;即刻交给linux内核&#xff0c;及时性&#xff09; 3. 标准IO是库函数,库函数可以在Windows和Linux系统中都能…

Linux下Code_Aster源码编译安装及使用

目录 软件介绍 基本依赖 其它依赖 一、源码下载 二、解压缩 三、编译安装 四、算例运行 软件介绍 Code_aster为法国电力集团&#xff08;EDF&#xff09;自1989年起开始研发的通用结构和热力耦合有限元仿真软件。Code_aster可用于力学、热学和声学等物理现象的仿真分析&…

OV通配符/泛域名SSL证书怎么获取和安装

OV通配符/泛域名SSL证书的获取和安装主要可以分为以下几个步骤&#xff1a; 一、获取证书 1. 选择服务商 选择一个提供OV通配符SSL证书的服务商&#xff0c;例如JoySSL。 2. 提交申请 在服务商网站上选择OV通配符SSL证书产品&#xff0c;填入基础信息&#xff0c;如公司名…

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦&#xff1a; 华秋&#xff1a; 背胶&#xff1a; FPC板背胶是可以粘接在光滑表面的一种薄型胶带&#xff0c;可以在狭小以及光滑的表面上用来提供高…

[蓝桥杯]真题讲解:抓娃娃(思维+二分)

[蓝桥杯]真题讲解&#xff1a;抓娃娃&#xff08;思维二分&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;抓娃娃&#xff08;思维二分&#xff09;&#xff09; 二、正解代码 1、C #include<bits/stdc.h> #d…

3月份太阳镜行业线上市场销售数据分析

在消费者行为方面&#xff0c;太阳镜不仅仅是视力保护工具&#xff0c;更逐渐成为一种时尚单品。随着人们对健康和美容重视程度的提高&#xff0c;太阳镜作为体现个人风格的单品&#xff0c;其市场需求得到了进一步的推动。此外&#xff0c;全球旅行和旅游业的恢复&#xff0c;…

【链路层和局域网】

文章目录 链路层和局域网网络节点的连接方式数据链路层和局域网链路层导论链路层&#xff1a;上下文链路层服务链路层在哪里实现&#xff1f;适配器通信错误检测奇偶校验校验和&#xff1a;CRC&#xff08;循环冗余校验&#xff09;多点访问链路和协议多路访问协议MAC&#xff…

OpenStack虚拟机管理实例

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、OpenStack计算服务 1、什么是Nova 2、Nova所用的虚拟技术 3、Nova的系统架构 4、虚拟机实例化流程 一、示例 1、验证Nova服务 2、试…

国标GB28181协议EasyCVR视频汇聚平台获取设备录像仅展示部分片段的原因排查

国标GB28181协议EasyCVR安防平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;平台支持7*24小时实时高清视频监控&#xff0c;能同时播放多路监控视频流&#xf…

Calendar 366 II for Mac v2.15.5激活版:智能日历管理软件

在繁忙的工作和生活中&#xff0c;如何高效管理日程成为了许多人的难题。Calendar 366 II for Mac&#xff0c;作为一款全方位的日历管理软件&#xff0c;以其独特的功能和优秀的用户体验&#xff0c;成为您的日程好帮手。 Calendar 366 II for Mac支持多种视图模式&#xff0c…

指针(4)

1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* ; 一般使用: int main() {char i a;char* p &i;*p q;printf("%c", i);return 0; } 然后我们看这个例子,这是把⼀个字符串放到pstr指针变量里了吗&#xff1f; 事实上不是,他只是将…