当前位置: 首页 > news >正文

git使用流程与规范

原文网址:git代码提交流程与规范-CSDN博客

简介

本文git提交流程与规范是宝贵靠谱的经验,它能解决如下问题:

  1. 分支差距过大,导致合代码无数的冲突
  2. 合完代码后发现代码丢失
  3. 分支不清晰,无法追溯问题
  4. 合代码耗时很长,占用大量时间。

git的基本使用规范

  1. git用户名要指定为名字拼音的第一个(或前两个)字母。比如:李四(ls),张三(zhs)
    1. 不要搞稀奇古怪的英文,因为这样追溯代码时不好找对应的人。
  2. 要选择rebase,禁用merge
    1. merge会丢代码(我周围的人踩过很多这个坑)。
    2. git提交清晰
    3. rebase是人类的正常思维:远程的代码优先。
      1. rebase是本地git先跟上远程git的最新提交点,再去提交代码
      2. merge是让远程git以本地git为基点(这样会导致本来领先的远程git又退回了)

IDEA选择rebase的方法

拉代码

推代码

项目从0-1时

说明

将git分支分为主分支和临时分支。

  • 开发阶段:
    • develop(只有这一个分支)
  • 测试阶段:
    • 开发完毕后从develop新拉分支,命名为test,用于测试(develop分支废弃)
    • 若有新需求:
      • 从test新拉临时分支写代码,分支命名为:test_需求名
      • 代码写完后,压点,cherry pick到test。(合到test的只有一个提交点,若test已更新,要选择rebase,不要选择merge)
    • 若有bug:
      • 小bug:直接在test改
      • 大bug:方法与上边“若有新需求”一致。
  • 上线阶段:
    • 测试完毕后从test新拉分支,命名为prod,用于测试

上线完毕后,项目0-1阶段结束,开启1-100阶段。删除develop分支,新代码全部从prod新拉分支写。

项目从1-100时

说明

将git分支分为主分支和临时分支。

  • 主分支:test(测试)、pre(预发布)、prod(生产)
  • 临时分支:需求点和bug修改

开发与提交流程

  1. 每个修改点(需求或bug)都要从prod新拉分支(即:临时分支)
  2. 合代码(代码都写在临时分支,合代码时从临时分支cherry pick到目的分支(主分支))
    1. 往test分支合代码时,需要先把自己的临时分支压缩为一个点,再cherry pick到test。
    2. 往pre分支合代码时,从临时分支cherry pick到pre分支,不要从test分支cherry pick。(因为test肯定有没测试的,不能上pre)
    3. 往prod分支合代码时,组员告诉组长自己的提交点,由组长从临时分支cherry pick到prod分支(因为pre肯定有没测试的,不能上正式)
  3. 远程有更新时,要rebase(以远程为基准),不要用merge(以本地为基准)
  4. 修改点上线(临时分支cherry pick到master)后,删除临时分支(防止分支过多)
  5. 定期(两三周)对test进行清理,删除test并重新从prod拉分支,作为test分支。(防止test与prod差距较远,导致临时分支往test分支合代码时冲突很多)
  6. 定期(两三周)对pre进行清理,删除pre并重新从prod拉分支,作为pre分支。(防止pre与prod差距较远,导致临时分支往pre分支合代码时冲突很多)

优点

以上步骤是我之前所在某个公司的提交流程,按这个流程来做,可以做到:合代码基本不出问题、合代码速度快(一般不会超过3分钟)。

以上步骤每一步都是有原因的:

  • 从prod拉新分支:可保证新分支代码是基于生产的,可以保证新分支是纯粹的自己的修改点
  • 合代码时都是从临时分支cherry pick到目的分支:可保证不会将其他人代码合到目的分支
  • 定期删除test、pre并从prod拉分支:从临时分支合到主分支时基本不会有冲突;而且可以删除test里无用的代码

感言

一个正常的功能点,如果合代码超过10分钟,那么,项目的git管理大概率有问题。如果超过30分钟,项目的git管理问题有点儿大。如果超过一个小时,那么这个项目肯定是经常丢代码,经常出奇怪的线上问题,客户投诉率肯定很高(亲眼见过)。

相关文章:

git使用流程与规范

原文网址:git代码提交流程与规范-CSDN博客 简介 本文git提交流程与规范是宝贵靠谱的经验,它能解决如下问题: 分支差距过大,导致合代码无数的冲突合完代码后发现代码丢失分支不清晰,无法追溯问题合代码耗时很长&…...

力扣 264. 丑数 II python AC

堆 from heapq import heappop, heappushclass Solution:def nthUglyNumber(self, n):q [1]vis {1}for _ in range(n - 1):now heappop(q)for i in [2, 3, 5]:if now * i not in vis:vis.add(now * i)heappush(q, now * i)return heappop(q)...

resetlogs强制拉库失败并使用备份system文件还原数据库故障处理---惜分飞

接手一个库,在open的过程中遭遇到ORA-600 2662错误 Sun May 26 10:15:54 2024 alter database open RESETLOGS RESETLOGS is being done without consistancy checks. This may result in a corrupted database. The database should be recreated. RESETLOGS after incomplete…...

解析Java中1000个常用类:Error类,你学会了吗?

在 Java 编程中,异常处理是一个至关重要的部分。Java 提供了丰富的异常处理机制,包括 Exception 和 Error。 本文将深入探讨 Error 类的功能、用法、实际应用中的注意事项,以及如何处理和预防这些错误。 什么是 Error 类? Error 类是 Java 中 Throwable 类的一个子类,用…...

【C++】——string模拟实现

前言 string的模拟实现其实就是增删改查,只不过加入了类的概念。 为了防止与std里面的string冲突,所以这里统一用String。 目录 前言 一 初始化和销毁 1.1 构造函数 1.2 析构函数 二 迭代器实现 三 容量大小及操作 四 运算符重载 4.1 bool…...

unity2D跑酷游戏

项目成果 项目网盘 导入资源包 放入Assets文件Assets资源文件 游戏流程分析 摄像机size调小,让图片占满屏幕 人跑本质,相对运动,图片无限向右滚动 图片720,缩小100倍第二个图片x为7.2每unit px100两张图片刚好挨着连贯 空对象Bg…...

OWASP top10--SQL注入(四、sqlmap安装及使用)

目录 sqlmap工具安装: 工具说明: 主要功能特性包括: 基本使用示例: 先下载python2.7.9版本 sqlmap运行 sqlmap工具使用 -u -r –-levelLEVEL扫描深度级别 --riskRISK 执行测试的风险 -threads 线程数 -batch-smart智能…...

Java基础入门day62

day62 AJAX 概念 AJAX: Asynchronous Javascript And XML AJAX是一种无需重新加载整个网页的情况下,能够更新部分网页的技术 AJAX是一种用于创建快速动态网页的技术 通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新 传统…...

Oracle中两张表具有相同结构,如何将一张表内容全部插入到另一个表中

在Oracle中,如果两张表具有相同的结构,你可以使用INSERT INTO ... SELECT语句将一张表的内容插入到另一张表中。以下是一个示例: 假设有两个表:table1 和 table2,它们具有相同的列结构。要将 table1 的所有内容插入到…...

比特币的理论上限是多少个?

标签: 比特币的理论上限; 已经挖出多少个比特币; 问题:比特币的理论上限是多少个?截至2023年10月,已经挖出多少个比特币出来了? 比特币的理论上限 比特币的设计者中本聪在比特币协议中设定了比…...

LeetCode-131 分割回文串

LeetCode-131 分割回文串 题目描述解题思路C 代码 题目描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1: 输入:s “aab” 输出:[[“a”,“a”,“b”],…...

Flutter 中的 SliverPrototypeExtentList 小部件:全面指南

Flutter 中的 SliverPrototypeExtentList 小部件:全面指南 Flutter 是一个功能强大的 UI 框架,由 Google 开发,允许开发者使用 Dart 语言构建跨平台的移动、Web 和桌面应用。在 Flutter 的丰富组件库中,SliverPrototypeExtentLis…...

NeuralForecast 推理 - 数据集从文件dataset.pkl读

NeuralForecast 推理 - 数据集从文件dataset.pkl读 flyfish from ray import tune from neuralforecast.core import NeuralForecast from neuralforecast.auto import AutoMLP from neuralforecast.models import NBEATS, NHITS import torch import torch.nn as nn import …...

TS-类型转换(显式)

1.将其他类型转换为布尔类型 要将其他类型转换为布尔类型,只需要将待转换的值传入Boolean()函数 var msg: string "ok"; var msgToBollean: boolean Boolean(msg); //得到trueBoolean()函数会判断传入的值是空值还是非空值。 若表示非空值&#xff0…...

protobufjs 配置踩坑记录

本文主要是小程序使用PB协议,以下时博主遇到的问题以及解决办法。 1、安装protobufjs npm install --save protobufjs 注意:我之前也使用过 npm install -g protobufjs去安装,但是出现以下的问题,关键是我使用sudo 清除相关文件…...

freeswitch官方仓库

概述 在使用源代码编译安装freeswitch的过程中,我们经常需要一些依赖库,其中freeswitch官方的yum源仓库是最齐全最方便的。 但是,freeswitch仓库的配置和使用需要先在signalwire网站注册账号并获取PAT(personal access token&am…...

element ui el-calendar日历组件完整代码

el-calendar日历组件完整代码 1. 说在前面2. 日历整体代码3. 编辑与新增 1. 说在前面 最近一直忙于上班,没咋看博客,发现很多小伙伴都要日历组件的代码,于是今天抽空给大家整理一下,为爱发电!日历组件的原文在这里&am…...

初识java——javaSE(8)异常

文章目录 一 异常的概念与体系结构1.1 什么是异常?1.2 异常的体系结构!1.3 编译时异常与运行时异常与Error编译时异常:异常声明:throws关键字 运行时异常:什么是Error? 二 处理异常2.1 异常的抛出:throw(注…...

C语言面试题11至20题

探索编程面试题:深度解析11至20题 在编程面试中,经常会遇到一些需要深入理解计算机科学基础和编程原理的问题。以下是对一些常见面试题的详细解答,涵盖递归、循环控制、内存管理等关键概念。 11. 递归函数定义没有问题,递归深层…...

视频汇聚EasyCVR综合安防平台对接GA/T1400公安视图库及应用方案

随着科技的不断进步,视频监控系统在公共安全领域发挥着越来越重要的作用。GA/T1400公安视图库作为公安视频图像信息应用系统的标准,为视频监控系统的对接提供了统一的规范和技术要求。 GA/T1400标准的应用范围广泛,涵盖了公安系统的视频图像信…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

Go语言多线程问题

打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...