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管理问题有点儿大。如果超过一个小时,那么这个项目肯定是经常丢代码,经常出奇怪的线上问题,客户投诉率肯定很高(亲眼见过)。

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

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

相关文章

使用Spring Boot自定义注解 + AOP实现基于IP的接口限流和黑白名单

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

数据在内存中的存储<C语言>

导言 在计算机中不同类型的数据在计算机内部存储形式各不相同,弄懂各种数据在计算机内部存储形式是有必要的,C语言的学习不能浮于表面,更要锻炼我们的“内功”,将来在写程序的时候遇见各种稀奇古怪的bug时,也便能迎刃而…

应用案例|精密制造中使用复合机器人得到显著提升

精密制造行业对设备的精度、稳定性和效率要求极高,而复合机器人凭借其多功能性、高度灵活性和精准控制能力,正逐渐成为该领域的新宠。以下是一个富唯智能复合机器人在精密制造中的应用案例。 案例背景 某知名汽车零部件制造企业,专注于生产…

u盘文件保密的方法有哪些?关于U盘的使用你要知道这些!

U盘作为便携式的存储设备,被广泛应用于日常工作和生活中。 然而,U盘的丢失或被盗可能导致敏感数据泄露,因此,掌握U盘文件保密的方法至关重要。 本文将介绍几种有效的U盘文件保密方法,并分享关于U盘使用的关键知识&…

Threejs(WebGL)绘制线段优化:Shader修改gl.LINES模式为gl.LINE_STRIP

目录 背景 思路 Threejs实现 记录每条线的点数 封装原始裁剪索引数据 封装合并几何体的缓冲数据:由裁剪索引组成的 IntArray 守住该有的线段! 修改顶点着色器 修改片元着色器 完整代码 WebGL实现类似功能(简易版,便于测…

cdo | 常用命令

整理一下平时经常会使用的cdo命令 如何来更改netcdf数据中的变量名呢? 假设我现在有一个sst月平均数据,希望将里面的变量名称sst修改为sst_new netcdf oisst_monthly { dimensions:lat 180 ;lon 360 ;time UNLIMITED ; // (476 currently)nbnds 2 ; variable…

音视频开发14 FFmpeg 视频 相关格式分析 -- H264 NALU格式分析

H264简介-也叫做 AVC H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。 原始数据YUV,RGB为什么要压缩-知道就行 在⾳视频传输过程中,视频⽂件的传输…

Element快速入门

Vue组件库Element 1 Element介绍 vue是侧重于VM开发的,主要用于数据绑定到视图的,ElementUI就是一款侧重于V开发的前端框架,主要用于开发美观的页面的。 Element:是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库&…

使用pytorch搭建textCNN、BERT、transformer进行文本分类

首先展示数据处理后的类型: 第一列为文本,第二类为标注的标签,数据保存在xlsx的表格中,分为训练集和验证集。 textCNN 直接上整个工程代码: import pandas as pd import numpy as np import torch from torch.util…

SAPUI5基础知识3 - 引导过程(Bootstrap)

1. 背景 在上一篇博客中,我们已经建立出了第一个SAPUI5项目,接下来,我们将为这个项目添加引导过程。 在动手练习之前,让我们先解释一下什么引导过程。 1.1 什么是引导过程? 在计算机科学中,引导过程也称…

Presto 从提交SQL到获取结果 源码详解(3)

物理执行计划 回到SqlQueryExecution.startExecution() ,执行计划划分以后, // 初始化连接,获取Connect 元数据,添加会话,初始ConnectId metadata.beginQuery(getSession(), plan.getConnectors()); // 构建物理执行…

你真的会用收藏夹吗?可道云teamOS收藏夹,竟能缩短多层级文件夹的路径,实现快速访问

在日常工作中,我们时常会面临一个让人头疼的问题:如何在海量的文件和资料中快速找到我们需要的那一份? 尤其是在团队协作中,每个人都在不断地上传、更新文件……导致文件目录层级复杂,搜索也变得繁琐。 这时候&#x…

编程学习 (C规划) 6 {24_4_18} 七 ( 简单扫雷游戏)

首先我们要清楚扫雷大概是如何实现的: 1.布置雷 2.扫雷(排查雷) (1)如果这个位置是雷就炸了,游戏结束 (2)如果不是雷,就告诉周围有几个雷 3.把所有不是雷的位置都找…

一周学会Django5 Python Web开发 - Django5内置Admin系统二次开发

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计56条视频,包括:2024版 Django5 Python we…

【C++】Vector的简易模拟与探索

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

模型 FABE(特性 优势 好处 证据)法则

说明:系列文章 分享 模型,了解更多👉 模型_思维模型目录。特性、优势、好处、证据,一气呵成。 1 FABE法则的应用 1.1 FABE法则营销商用跑步机 一家高端健身器材公司的销售代表正在向一家新开的健身房推销他们的商用跑步机。以下…

Microsoft Dynamics 365 Business Central 讲解VAT RATE CHANGE TOOL(增值税税率更改工具)

学习目标: 如果使用VAT RATE CHANGE TOOL(增值税税率更改工具) 过程演示: 1.创建新的VAT产品过账组 2.创建新的总账科目以过账采购、销售和逆向征收增值税。 3.给新的VAT产品过账设置过账设置 4.创建一个新的一般产品过账组 5…

CUDA学习(2)

什么是CUDA CUDA(Compute Unified Device Architecture),统一计算设备架构,英伟达推出的基于其GPU的通用高性能计算平台和编程模型。 借助CUDA,开发者可以充分利用英伟达GPU的强大计算能力加速各种计算任务。 软件生…

手写HTML字符串解析成对应的 AST语法树

先看效果 展示如下: HTML模版 转成ast语法树后 在学习之前,我们需要了解这么一个问题,为什么要将HTML字符串解析成对应的 AST语法树。 为什么? 语法分析:HTML字符串是一种标记语言,其中包含了大量的标签…

chap5 CNN

卷积神经网络(CNN) 问题描述: 利用卷积神经网络,实现对MNIST数据集的分类问题 数据集: MNIST数据集包括60000张训练图片和10000张测试图片。图片样本的数量已经足够训练一个很复杂的模型(例如 CNN的深层…