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

【新手小白版】Gerrit使用教程

本文记录了Gerrit使用的一些常用命令及操作,基本可以覆盖日常工作需要。

另外之前也写过一些关于git使用的文章,感兴趣可以参考:
Gerrit多仓库对应多邮箱配置办法
git提交代码时报错nothing to commit,commitId错乱解决办法
git 打patch协作合并提交代码,解决冲突
git commit后使用repo upload出现no branches ready for upload
gerrit提交代码有冲突或其他原因导致的cannot merge以及提交代码流程

整理这篇博客的时候才发现原来已经写过那么多了,我也太棒了吧

好了言归正传,以下是正文内容

首先我们要知道什么是Gerrit

Gerrit是一种代码管理工具,是比gitlab更强大更规范的存在。它的功能包括不限于提交代码,合并代码,在网页修改提交的代码,解决冲突,筛选功能等。

我们如何使用Gerrit

第一步

首先我们需要知道公司gerrit的地址,在网站打开;
然后我们要知道自己的账号,密码,点击Gerrit网站右上角的Sign In登录进去。

第二步

配置SSH KEY,这一步也很关键很重要,总之我感觉使用Gerrit没有一步不重要的,可以说是错一步,步步错,所以认真点学吧。
1.新建一个workspace目录,确保这个目录是有权限的(mac, linux用户)
2.在目录下右键,打开你的git bash命令行工具,没有的安装一个,后面会经常用
3.git配置个人信息:

//不配置全局也可以,看个人选择,不想配置全局就把“--global”去掉,如果发现配置失败,就执行git init再配置
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

4.生成ssh key,这步会直接影响到拉代码

ssh-keygen -t rsa -C "你的邮箱地址"
//按回车键确认保存路径(默认路径为 ~/.ssh/id_rsa),如果不需要更改路径,直接按回车键即可。
//输入密码和确认密码(如果不需要密码,直接按回车键跳过)
//执行上述命令后,会在指定路径下生成两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。

5.查看和复制公钥

//查看公钥
cat ~/.ssh/id_rsa.pub

把输入上述命令之后打印出来的公钥复制下来,从第一个字符复制到最后一个字符,不要多复制也不要少复制

6.添加公钥
在已登录gerrit的情况下,点击gerrit网站上右上角你的姓名,点击settings,进入gerrit的设置(Settings),找到添加ssh key 的地方
点击右上角姓名-选择settings-左侧"ssh keys"-把刚刚复制的公钥粘贴到"new ssh key"右侧的输入框里,点击"ADD NEW SSHKEY",这样就添加成功了,一般你会收到邮件通知你添加ssh key成功

如果添加失败,再重复前面三个步骤,一般是个人信息配置失败或者复制错了。

第三步

如果前面的都做成功了,到这里就可以拉代码了
首先你需要在gerrit找到你的代码仓库,不知道代码仓库的问下你的同事,或者你可以点击顶部CHANGES-MERGED-点击任意一条你同事提交的REPO列的字段(这就是你的仓库了),这时候你会进入到代码仓库界面,在这里可以复制拉代码的命令,一般选择http列或者ssh列,我一般用ssh拉代码,选择第一行有commit-msg hook备注的命令,点击复制按钮,把复制的命令粘贴到你前面打开的git bash命令行里,然后按回车,这样就开始拉代码了

等到代码拉完,你可以选择切换分支:

git branch -r
git checkout 你想要的分支
git branch --set-upstream-to=origin/你想要的分支 你想要的分支
git pull

第四步

提交代码,每个公司的commit-msg规范不一样,最简单的做法就是看你别的同事已合入的提交记录是咋写的,如果commit-msg不符合规范,会导致无法提交代码。
提交代码命令:

//查看你本地修改状态
git status
git add . //添加所有修改的文件
//git add 文件完整路径 //可以从第一行命令打印出来的里直接复制,这行和上面那行根据情况选择一个
git commit . //二次确认需要提交的所有修改的文件,这里输入完会进入commit-msg表单//填commit-msg,注意这里需要按规范填写,linux命令就不用我教了吧,英文输入法下按a会进入编辑状态,输入完之后按esc,然后输入冒号,再输入wq,就是保存后退出//提交代码
git push origin HEAD:refs/for/你要提交的分支

提交代码时你可能会遇到的一些问题

第一种:fail to push some refs to “xxxx”

一般有两个原因

  1. 命令输错/分支名打错,是这个原因的去上面再看一眼提交命令
  2. git链错误了,这个概率也挺大的,你需要执行以下命令
    比如当前在master分支要提交内容,那么你需要在commit之后,执行:
git stash    //如果直接输入下面那行有报错提示You have unstaged changes.的话,没有的话就不用输入
git pull --rebase origin 分支名
git rebase --continue
git stash pop    //和第一句配合,第一句没输这句就不用输,这两句的作用主要是把本地未commit的修改压入缓冲区,以及再从缓冲区扔到本地,防止操作的时候影响到本地的内容
git push origin HEAD:refs/for/你要提交的分支

第五步

在上述步骤都成功之后,你现在需要合入代码,也就是需要把你本地修改的内容发布到代码仓库里,不然别人是看不到你的修改的。
点击左上角CHANGES-OPEN,并且点击你的那条提交,点击左侧Reviewers右边的编辑按钮,此时会弹出框要求你添加review代码的审查人,输入有权限的审核者名字或者邮箱,搜索框会显示搜索内容,选择他,下面的CC可以加也可以不加,这个是通知你想通知的人,他可以不参加审核,选好之后点击右下角SEND按钮,gerrit就会自己发邮件通知reviewers了,你也可以把你的提交的网址复制给你的reviewers让他们审核。
一般代码合入条件是verified+1和code review+2同时满足,此时右上角会出现submit按钮高亮,也有可能出现按钮但是不高亮的情况,此时点击rebase按钮,选择将你的change追加到最新提交上,如果还是无法合入,那么接着往下看。

冲突的解决办法

第一种情况:提交链错乱

有时如果提交代码的顺序与合入代码的顺序不一致,即使没有改动同一份文件,也可能会出现conflict提示,也可能提示无法合入,也就是说可能同时有多个人有不同的提交,reviewer可能先合入了比你后提交的代码。这是由于git链不一致了,此时点击需要合入的那份代码的右上角的“REBASE”,然后输入你想要追加到后面的那条提交的changeId(一般是当前merge进去的最新一笔提交的changeId),点击确认即可。

第二种情况:提交链错乱的同时修改了同一份代码文件

这种情况比第一种复杂一点,简单的通过网页一般很难解决,不过遇到这种情况,先试一下上面第一种情况的办法,如果还是无法解决,就在本地执行git pull拉一下最新代码,在本地解决下冲突,一般有冲突的地方git会帮你标注出来,提交代码的时候记得删掉注释,本地解决完没问题之后,如果你冲突的是你最新提交的那笔,就执行:

git add 你要提交的代码文件的完整路径
git commit --amend	//追加到你最新提交的代码上
//此时会跳转到commit-msg表单,如果你没有要修改的内容的话,就shift+zz退出编辑
git push origin HEAD:refs/for/你要提交的分支

如果你冲突的并不是最新那笔,那你看本文最后一节,包你精通gerrit

第三种情况:前面两种都解决不了

那你只能点击gerrit网页你的提交的右上角abandon按钮,丢弃这条提交,不会合到主分支里,也不会对你本地有影响,abandon之后,回到你的本地,让我们来做一些处理:

git log	//查看提交历史,执行这句会打印所有的提交记录,复制一下你刚刚abandon的提交前一条的commit-id,注意是commit-id,就是每条提交的第一行,和change-id是两个东西
git reset --soft 复制的commit-id	//这里的soft代表保留废弃的修改内容到本地,但是回滚到你的提交之前,可以使用hard,但是不推荐,因为容易丢git pull	//拉最新的代码
//这时候你可以解决冲突了,解决完了之后做add, commit, push操作再重复一遍第五步

追加提交相关的操作

第一种:最新的commit提交遗漏了一些文件或者修改

如果你已经push到远端,但是本地还有一些文件没有提交,但是此时远端代码还没有合入,你可以执行以下命令:

 git statusgit add 你想追加的文件1 你想追加的文件2git commit --amend //这句的意思是追加到你本地最后一笔提交上git push origin HEAD:refs/for/xxxxxxxxxxx

第二种:你本地有多个提交,你需要在中间的提交追加东西或者去除东西

首先我们看下本地提交链:

//假设它长这样
commit 33333333333333
Author: you <you@xxx.com>
Date:   Wed Oct 22 10:12:26 2025 +0800your-commit-msgxxxxxxxxxxxxxxChange-Id: change14235236161commit 2222222222222222
Author: you <you@xxx.com>
Date:   Wed Oct 22 09:11:02 2025 +0800your-commit-msgxxxxxxxxxxxxxxChange-Id: change14r435432656245commit 11111111111111
Author: you <you@xxx.com>
Date:   Tue Oct 21 10:54:38 2025 +0800your-commit-msgxxxxxxxxxxxxxxChange-Id: change14436567546897683

比如你想追加到commit-id为2222222222222222的这笔上,这也很简单,不要怕,接着往下看:

//你先在本地做好你准备提交的修改,然后再做以下处理
git rebase -i 2222222222222222
此时会自动打开编辑器,找到你想要的那个,将最前面的“pick”改为“edit”
然后编辑你需要追加的文件,改好之后执行
git add .(这里的点点代表追加所有修改,如果你不想追加所有修改,那么就把点换成完整的文件路径,可以填多个)
git commit --amend
git rebase --continue  
git push origin HEAD:refs/for/xxxxxxxxxxx

OK,现在说谢谢我吧

http://www.dtcms.com/a/515170.html

相关文章:

  • Java大模型应用开发框架langchain4j,springai alibaba小结
  • 佛山网络发言人平台湛江网站推广优化
  • 2025最佳跨境电商代理提供商:适配数据采集!
  • C++ STL Deque 高频面试题与答案
  • 墨刀可以做网站原型图吗做游戏推广一个月能拿多少钱
  • 《微信小程序》第三章:Request封装
  • 破空驭风,智领未来 --5KG物流配送无人机展示飞行!
  • 全面掌握 PostgreSQL 关系型数据库,PostgreSQL 和 MySQL 的区别,笔记03
  • 做RAG的开发者如何选择合适的开源项目
  • Spring Boot整合JWT实现跨站点统一登录
  • Spring Boot Docker镜像分层优化指南
  • Linux中页面写回初始化page_writeback_init函数实现
  • 神经网络中的随机高斯初始化技术
  • 怎样做网站分流赚钱东莞网站制作哪家公司好
  • HOOPS 3D可视化引擎:覆盖实时渲染与仿真分析的高性能解决方案!
  • 云原生架构下微服务接入 SkyWalking 最佳实践
  • 单片机中的机器周期、指令周期、总线周期的联系和区别
  • spring微服务宏观概念
  • 在阿里云通过docker部署srs流媒体服务器(支持webrtc、http-flv)
  • 【WAF】 Nginx如何集成安全检测服务
  • nginx安装和使用
  • 茂名市建设银行网站今天哈尔滨最新通告
  • 快飞建站月夜直播免费版
  • Windows 11 25H2 更新补丁导致鼠标键盘失灵,紧急更新补丁已推出
  • 移动端 (RN) - 键盘弹出, 不遮挡输入框 (和 底部按钮)的处理方案
  • 【C++闯关笔记】深究继承
  • Python爬虫抓取豆瓣TOP250数据
  • AWS Elemental MediaConvert:视频转码不再难
  • 华为OD最新机试真题-乘坐保密电梯-OD统一考试(C卷)
  • SpringBoot 如何实现零拷贝:深度解析零拷贝技术