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

1-1 Gerrit实用指南

注:学习gerrit需要拥有git相关知识,如果没有学习过git请先回顾git相关知识点


黑马程序员git教程


一小时学会git


git参考博客


git 实操博客


1.0 定义


Gerrit 是一个基于 Web 的代码审查系统,它使用 Git 作为底层版本控制系统。Gerrit 的主要功能是帮助团队进行代码评审,通过这种方式来提高软件质量并促进开发者之间的协作。

Gerrit关键特性:

  1. 代码审查:在代码合并到主分支之前,Gerrit 允许团队成员对更改进行审查。这有助于提前发现潜在问题,并确保只有经过批准的更改才会被合并。
  2. 访问控制:提供细粒度的权限管理,允许管理员定义谁可以提交代码、谁可以审查代码以及谁可以批准代码变更等。
  3. 集成能力:Gerrit 可以与多种持续集成(CI)工具集成,如 Jenkins,这样每次有新的代码提交时都可以自动触发构建和测试过程。
  4. Git 扩展:除了标准的 Git 功能外,Gerrit 还提供了额外的功能,比如在线查看差异(diffs)、评论特定行或文件等。
  5. 可扩展性:支持插件机制,可以通过安装插件来增加新的功能或者改进现有的工作流程。

2.0 gerrit工作流程

使用过git的同学,都知道,当我们git add --> git commit --> git push 之后,你的代码会被直接提交到repo,也就是代码仓库中,就是图中橘红色箭头指示的那样。

那么gerrit就是上图中的那只鸟,普通成员的代码是被先push到gerrit服务器上,然后由代码审核人员,就是左上角的integrator在web页面进行代码的审核(review),可以单人审核,也可以邀请其他成员一同审核,当代码审核通过(approve)之后,这次代码才会被提交(submit)到代码仓库(repo)中去。

无论有新的代码提交待审核,代码审核通过或被拒绝,代码提交者(Contributor)和所有的相关代码审核人员(Integrator)都会收到邮件提醒。


gerrit还有自动测试的功能,和主线有冲突或者测试不通过的代码,是会被直接拒绝掉的,这个功能似乎就是右下角那个老头(Jenkins)的任务。


整个流程就是这样。 在使用过程中,有两点需要特别注意下:


1、 当进行commit时,必须要生成一个Change-Id,否则,push到gerrit服务器时,会收到一个错误提醒。


2、提交者不能直接把代码推到远程的master主线(或者其他远程分支)上去。这样就相当于越过了gerrit了。 gerrit必须依赖于一个refs/for/*的分支。


假如我们远程只有一个master主线,那么只有当你的代码被提交到refs/for/master分支时,gerrit才会知道,我收到了一个需要审核的代码推送,需要通知审核员来审核代码了。


当审核通过之后,gerrit会自动将这条分支合并到master主线上,然后邮件通知相关成员,master分支有更新,需要的成员再去pull就好了。

而且这条refs/for/master分支,是透明的,也就是说普通成员其实是不需要知道这条线的,如果你正确配置了sourceTree,你也应该是看不到这条线的。

注:2.0内容引用自博客:【https://blog.csdn.net/chuyouyinghe/article/details/124024459】


3. 0 SSH配置


git config --global user.name “用户名”git config --global user.email “邮箱”

注:用户名自己喜欢什么名字就写什么名字即可,邮箱这里指的并不是自己的邮箱而是自己的主机名(写自己邮箱有可能出现无法访问的情况),另外github支持我们使用用户名和自己的邮箱登录。


cd ~/.ssh    // 进入ssh目录ls           // 查看当前目录下文件

注:如果当前目录下不包含id_rsa.pub 与 id_rsa就使用生成公钥与私钥的指令

此处包含公钥和私钥表示我此前已经生成过了,为了演示方便我继续操作一次

ssh-keygen -t rsa -C "你的邮箱"    // 邮箱可以写成自己的主机名


ls -----------> 指令查看是否生成公钥和私钥

cat 指令查看公钥的内容,cat id_rsa.pub

把生成的公钥放到远程仓库的key中即可,进入github






把新生成的公钥添加进去




公钥添加成功咋们下面进行测试

使用mkdir 指令创建一个新的目录,然后cd进入新的目录,然后pwd查看当前目录


找一个远程已经存在的仓库,克隆下来,验证之前的配置




配置成功,当前目录下多了一个克隆下来的远程仓库


4.0 Gerrit基本操作


提交公钥到gerrit才能使用ssh,实际上和提交到gitHub上是一致的,没有什么本质区别,生成公钥和私钥步骤与3.0 操作一致。


gerrit 添加公钥参考:

git实战—Gerrit配置SSH key & 下载代码到本地 & 使用VScode编辑器编辑提交代码——2023.07-阿里云开发者社区


 gerrit 克隆下远程仓库后查看远程仓库上的内容

进入远程仓库查看远程仓库的内容 cat -alt指令

注意:在我们push代码到远程仓库之前需要同步一下远程的代码到本地,不然容易引发冲突


使用 git pull --rebase同步远程的代码到本地



git add fileName ----> 将文件添加到工作区


 将文件推送到远程:git push origin HEAD:refs/for/master

 注:origin 表示的是本机的地址,HEAD:refs/for/master表示的是本地的分支

在远程仓库查看我们的提交



提交以后使用:git pull --rebase指令将代码同步到本地

 一定要使用rebase如果不手动添加rebase的话,会默认使用merge这个时候会多一个提交


5.0 文件提交树


git log --graph --oneline --decorate --all


6.0 临时存储

注:开发已经进行到一半,有一个新的需求需要我们排除bug

这个时候由一个程序上的bug需要我们解决,如何处理?如果需求完成可以生成一个提交,如果没有完成可以将这个文件隐藏起来。

指令:git stash save "备注" 将没有开发完的文件隐藏起来


查看隐藏的内容:git stash list


同步到远程:git pull --rebase

这个时候就可以在这个基础上解Bug了,


解完bug之后将隐藏的文件的提交格式:

git commit -m "类型 | 编号 > fix xxxx bug"git commit -m "fix | #1225 > fix xxxx bug"

 fix 还要做一些说明,也就是固定的格式

指令: git commit --amend

 找对应的bug的一个提交链接也填进去,方便我们回溯项目时更清晰的知道bug在哪个位置是那一次的提交引起的,不要被自己坑了,这一点非常重要


 查看log里面的前面3条:主要是查看更改完的效果

git log -3


bug 解决完之后继续同步一下,因为远程仓库可能已经被更新

git pull --rebase

代码推送:git push origin HEAD:refs/for/master


回到原来的工作把隐藏的东西显示出来

git stash apply stash@{0}


......

相关文章:

1-1 Gerrit实用指南

注:学习gerrit需要拥有git相关知识,如果没有学习过git请先回顾git相关知识点 黑马程序员git教程 一小时学会git git参考博客 git 实操博客 1.0 定义 Gerrit 是一个基于 Web 的代码审查系统,它使用 Git 作为底层版本控制系统。Gerrit 的主要功…...

docker如何安装redis

第一步 如果未指定redis,则安装的是最新版的 docker pull redis 创建一个目录 mkdir /usr/local/docker/redis 然后直接可以下载redis,这是方式确实不怎么好,应该找在官网上找对应的redis配置文件 wget http://download.redis.io/redis-stab…...

省级新质生产力数据(蔡湘杰版本)2012-2022年

测算方式:参考《当代经济管理》蔡湘杰(2024)老师研究的做法,本文以劳动者、劳动对象和劳动资料为准则层,从新质生产力“量的积累、质的提升、新的拓展”三维目标出发,构建新质生产力综合评价指标体系&#…...

【游资悟道】-作手新一悟道心法

作手新一经典语录节选: 乔帮主传完整版:做股票5年,炼成18式,成为A股低吸大神!从小白到大神,散户炒股的六个过程,不看不知道自己水平 围着主线做,多研究龙头,研究涨停&am…...

Diffusion中的Unet (DIMP)

针对UNet2DConditionModel模型 查看Unet的源码,得知Unet的down,mid,up blocks的类型分别是: down_block_types: Tuple[str] ("CrossAttnDownBlock2D","CrossAttnDownBlock2D","CrossAttnDownBlock2D","DownBlock2…...

编译以前项目更改在x64下面时报错:函数“PVOID GetCurrentFiber(void)”已有主体

win32下面编译成功,但是x64报错 1>GetWord.c 1>md5.c 这两个文件无法编译 1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winnt.h(24125,1): error C2084: 函数“PVOID GetCurrentFiber(void)”已有主体 1>C:\Program Files (x…...

【AIGC】大模型面试高频考点-数据清洗篇

【AIGC】大模型面试高频考点-数据清洗篇 (一)常用文本清洗方法1.去除无用的符号2.去除表情符号3.文本只保留汉字4.中文繁体、简体转换5.删除 HTML 标签和特殊字符6.标记化7.小写8.停用词删除9.词干提取和词形还原10.处理缺失数据11.删除重复文本12.处理嘈…...

当测试时间与测试资源有限时,你会如何优化测试策略?

1.优先级排序:根据项目的需求和紧急程度进行优先级排序,将测试用例用例划分优先级,合理安排测试资源 和时间。这样能够保障在有限的时间内测试到最关键的功能 2.提前介入测试:在开发过程中提前进行测试,可以迅速发现问…...

基于R语言森林生态系统结构、功能与稳定性分析与可视化

在生态学研究中,森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性,还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…...

如何使用 Python 实现插件式架构

使用 Python 实现插件式架构可以通过动态加载和调用模块或类,构建一个易于扩展和维护的系统。以下是实现插件式架构的步骤和核心思想。 1. 插件式架构核心概念 主程序:负责加载、管理插件,并调用插件的功能。插件:独立的模块或类…...

【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

【纯原生js】原生实现h5落地页面中的单选组件按钮及功能

h5端的按钮系统自带的一般都很丑&#xff0c;需要我们进行二次美化&#xff0c;比如单选按钮复选框之类的&#xff0c;那怎么对其进行html和css的改造&#xff1f; 实现效果 实现代码 <section id"tags"><h2>给景区添加标题</h2><label><…...

深入浅出:开发者如何快速上手Web3生态系统

Web3作为互联网的未来发展方向&#xff0c;正在逐步改变传统互联网架构&#xff0c;推动去中心化技术的发展。对于开发者而言&#xff0c;Web3代表着一个充满机遇与挑战的新领域&#xff0c;学习和掌握Web3的基本技术和工具&#xff0c;将为未来的项目开发提供强大的支持。那么…...

通过深度点图表示的隐式场实现肺树结构的高效解剖标注文献速递-生成式模型与transformer在医学影像中的应用

Title 题目 Efficient anatomical labeling of pulmonary tree structures via deeppoint-graph representation-based implicit fields 通过深度点图表示的隐式场实现肺树结构的高效解剖标注 01 文献速递介绍 近年来&#xff0c;肺部疾病&#xff08;Decramer等&#xff…...

数据结构 (17)广义表

前言 数据结构中的广义表&#xff08;Generalized List&#xff0c;又称列表Lists&#xff09;是一种重要的数据结构&#xff0c;它是对线性表的一种推广&#xff0c;放松了对表元素的原子限制&#xff0c;容许它们具有其自身的结构。 一、定义与表示 定义&#xff1a;广义表是…...

论文笔记 SliceGPT: Compress Large Language Models By Deleting Rows And Columns

欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游。 数学知识 秩&#xff1a; 矩阵中最大线性无关的行/列向量数。行秩与列秩相等。 线性无关&#xff1a;对于N个向量而言&#xff0c;如果任取一个向量 v \textbf{v} v&#xff0c;不能被剩下的N-1个向量通过线性组合的方式…...

前端工具的选择和安装

选择和安装前端工具是前端开发过程中的重要步骤。现代前端开发需要一些工具来提高效率和协作能力。以下是一些常用的前端工具及其选择和安装指南。 1. 代码编辑器 选择一个好的代码编辑器可以显著提高开发效率。以下是几款流行的代码编辑器&#xff1a; Visual Studio Code (…...

Fantasy中定时器得驱动原理

一、服务器框架启动 public static async FTask Start(){// 启动ProcessStartProcess().Coroutine();await FTask.CompletedTask;while (true){ThreadScheduler.Update();Thread.Sleep(1);}} 二、主线程 Fantasy.ThreadScheduler.Update internal static void Update(){MainS…...

【反转链表】力扣 445. 两数相加 II

一、题目 二、思路 加法运算是从低位开始&#xff0c;向高位进位&#xff0c;因此需要将两个链表进行反转&#xff0c;再进行对齐后的相加操作。力扣 2. 两数相加 三、题解 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode …...

SpringBoot 项目中使用 spring-boot-starter-amqp 依赖实现 RabbitMQ

文章目录 前言1、application.yml2、RabbitMqConfig3、MqMessage4、MqMessageItem5、DirectMode6、StateConsumer&#xff1a;消费者7、InfoConsumer&#xff1a;消费者 前言 本文是工作之余的随手记&#xff0c;记录在工作期间使用 RabbitMQ 的笔记。 1、application.yml 使…...

Uniapp 安装安卓、IOS模拟器并调试

一、安装Android模拟器并调试 1. 下载并安装 Android Studio 首先下载 Mac 环境下的 Android Studio 的安装包&#xff0c;为dmg 格式。 下载完将Android Studio 向右拖拽到Applications中&#xff0c;接下来等待安装完成就OK啦&#xff01; 打开过程界面如下图所示&#xf…...

JavaScript 中的原型和原型链

JavaScript 中的原型和原型链也是一个相对较难理解透彻的知识点&#xff0c;下面结合详细例子来进行说明&#xff1a; 一、原型的概念 在 JavaScript 中&#xff0c;每个函数都有一个 prototype 属性&#xff0c;这个属性指向一个对象&#xff0c;这个对象就是所谓的 “原型对…...

数组变换(两倍)

数组变换 以最大元素为基准元素&#xff0c;判读其他元素能否通过 x 2 成为最大值&#xff01; 那么怎么判断呢&#xff1a; max % arr[i] 0arr[i] * 2 ^n max int x 2 ^ n max / arr[i] 3.只需判断 这个 x 是不是 2 的 n 次放就可以了&#xff01; 判断 是否为 2 的 n 次 …...

GBN协议、SR协议

1、回退N步&#xff08;Go-Back-N,GBN&#xff09;协议&#xff1a; 总结&#xff1a; GBN协议的特点&#xff1a; &#xff08;1&#xff09;累计确认机制&#xff1a;当发送方收到ACKn时&#xff0c;表明接收方已正确接收序号为n以及序号小于n的所有分组&#xff0c;发送窗…...

三维扫描检测仪3d扫描测量尺寸-自动蓝光测量

在现代工业及生产过程中&#xff0c;精确、高效的尺寸检测是保证产品质量、提升生产效率的关键因素。 红、蓝光测量&#xff0c;以其高精度、高效率和非接触式的特点&#xff0c;在工业及生产中发挥着越来越重要的作用。蓝光测量技术利用蓝色激光光源&#xff0c;通过扫描被测…...

大模型翻译能力评测

1. 背景介绍 随着自然语言处理技术的飞速发展&#xff0c;机器翻译已经成为一个重要的研究领域。近年来&#xff0c;基于大模型的语言模型在机器翻译任务上取得了显著的进展。这些大模型通常具有数亿甚至数千亿的参数&#xff0c;能够更好地理解和生成自然语言。 但是&#xf…...

MySQL隐式转换造成索引失效

一、什么是 MySQL 的隐式转换&#xff1f; MySQL 在执行查询语句时&#xff0c;有时候会自动帮我们进行数据类型的转换&#xff0c;这个过程就是隐式转换。比如说&#xff0c;我们在一个 INT 类型的字段上进行查询&#xff0c;但是传入的查询条件却是字符串类型的值&#xff0c…...

SuperMap Objects组件式GIS开发技术浅析

引言 随着GIS应用领域的扩展&#xff0c;GIS开发工作日显重要。一般地&#xff0c;从平台和模式上划分&#xff0c;GIS二次开发主要有三种实现方式&#xff1a;独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊&#xff0c;其中集成二次开发既可以充分利…...

多组数输入a+b:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 输入描述: 输入包含多组数据&#xff0c;每组数据输入一行&#xff0c;包含两个整数 输出描述: 对于每组数据输出一行包含一个整数表示两个整数的和 代码: import java.util.Scanner; pu…...

R语言结构方程模型(SEM)在生态学领域中的应用

目录 专题一、R/Rstudio简介及入门 专题二、结构方程模型&#xff08;SEM&#xff09;介绍 专题三&#xff1a;R语言SEM分析入门&#xff1a;lavaan VS piecewiseSEM 专题四&#xff1a;SEM全局估计&#xff08;lavaan&#xff09;在生态学领域高阶应用 专题五&#xff1…...

利用博客做网站/seo实战密码第三版pdf下载

在 Apache RocketMQ 中&#xff0c;当消费者去消费消息的时候&#xff0c;无论是通过 pull 的方式还是 push 的方式&#xff0c;都可能会出现大批量的消息突刺。如果此时要处理所有消息&#xff0c;很可能会导致系统负载过高&#xff0c;影响稳定性。但其实可能后面几秒之内都没…...

做律师咨询网站/山东疫情最新情况

简介 自.NET 4.5发布已经过了差不多1年了。但是随着最近微软大多数的发布&#xff0c;与.NET开发者交流的问题显示&#xff0c;开发者仅知道一到两个特性&#xff0c;其他的特性仅仅停留在MSDN并以简单的文档形式存在着。 比如说&#xff0c;当你问一个.NET开发者.NET框架内核中…...

网站制作报价大约/阳泉seo

[转载博客](http://blog.csdn.net/pyfysf/article/details/72598518) 已经安装好了AndroidStudio&#xff0c;安装教程 本教程是作者自己摸索出来的&#xff0c;有不足之处还请大家海涵。多多拍砖&#xff0c;互相学习。 第一步&#xff1a;下载git&#xff0c;安装git客户端 …...

做行业b2b网站前景/巨量算数关键词查询

java如何连接mongoDB解决方法&#xff1a;下面代码init()初始化MongoClient&#xff0c;getDb()获取数据库&#xff0c;insertOne插入方法&#xff0c;main方法是测试的public class MongoDbConfig {private static Logger log Logger.getLogger(MongoDbConfig .class);public…...

企业网站备案怎么做/百度入口网址

去除重复字母 给你一个字符串 s &#xff0c;请你去除字符串中重复的字母&#xff0c;使得每个字母只出现一次。需保证 返回结果的字典序最小&#xff08;要求不能打乱其他字符的相对位置&#xff09;。 注意&#xff1a;该题与 1081 https://leetcode-cn.com/problems/smalle…...

wordpress做社交网站/百度网盘下载

登录linux时出现黑屏的找到这篇解决SUSE的黑屏问题1、在启动时&#xff0c;GRUB上引导命令后面加上一个VGA791&#xff0c;这样进去屏幕分辩率就是1024*768。kernel (hd0,0)/linux root/dev/ram ramdisk_size65536 devfsmount,all vga791initrd (hd0,0)/initrdboot2、在黑屏时。…...