Gerrit 相关使用教程

发布时间:2026/10/22 20:31:07

Gerrit 相关使用教程 一、更新代码1、更新全部代码根目录执行repo sync筛选更新repo sync -c --no-tags -d -j8一般 repo sync 都会加上 -j4、-j8代表最多可以多少个线程同时执行。主要根据个人电脑配置自行选择建议 8G 内存使用 -j416G 内存使用 -j8。2、更新局部代码指定目录下执行git pull3、重新下载代码1忽略本地的改动强制重新下载代码repo sync -d2下载过程中出现错误继续下载repo sync -f --force-sync-f使遇到网络错误时继续下载--force-sync表示出现冲突时继续下载。二、分支1、查看分支本地分支git branch所有远程分支git branch -r所有分支git branch -a查看本地分支及关联的远程分支git branch -vv2、切换分支直接切换git checkout name创建新分支并切换git checkout -b name覆盖本地代码并切换git checkout -f name创建本地分支并绑定远程分支git checkout -b 本地分支 origin/远程分支切换目录下所有仓库分支循环切换repo forall -c git checkout name修改关联的远程分支git branch --set-upstream-to新分支路径3、删除分支删除本地分支git branch -d 本地分支名git branch -D 本地分支名如果本地分支没有与远程分支完全合并且放弃合并时直接使用 -D 进行删除。删除远程分支git push origin --delete 分支名三、提交代码1、查看修改查看修改文件git status查看修改内容git diff2、提交代码到暂存区全部提交git add .提交指定文件git add 文件路径3、提交到远程分支1添加描述信息单行信息git commit -m 描述信息多行信息git commit这里多行信息处理还需要解释一下git commit 进入到信息编辑窗口这里还要对 Linux 和 Windows 分别介绍Linux直接在上面填写信息CtrlX 进行数据保存退出即可。Windows输入小写字母 i 进入编辑模式填写信息。按 esc 键退出编辑模式输入 :wq 保存退出。也按 esc 退出编辑模式后连续按输入两个大写字母 Z 退出。2提交到指定分支git push origin HEAD:refs/for/分支名称git push推送本地更改到远程仓库的基本命令。origin远程仓库的名字默认情况下克隆操作会自动设置远程仓库名为 origin。你可以通过 git remote -v 查看当前配置的远程仓库及其 URL。HEAD这是一个指向你当前所在分支顶端提交的指针。它代表了你最近一次提交的状态。refs/for/分支名称这里的 refs/for/ 是一个特殊的命名空间通常与 Gerrit 等代码审查系统相关联。它表示推送的更改不会直接合并到目标分支而是进入一个待审状态等待其他开发者或管理员进行审查。而 分支名称 则是你想要推送更改的目标分支名。4、特定提交应用到其他分支上当我们需要将同一套修改提交到多个不同分支上时首先想到的是切换不同分支依此提交当然这种方式也可以但 Gerrit 为我们提供了一个更简便的方法。git cherry-pick commit-id首先提交分支会得到一个 commit-id提交其他分支时直接使用上面命令即可。也可以在 Gerrit 网站上操作。1点击右上角三个点按钮。2选择第一个 Cherry pick。3在 Cherry Pick to branch 下填写分支名称。4点击 CHERRY PICK 即可。四、修改提交1、修改描述信息git commit --amendps注意不要修改 id 内容2、追加提交在代码提交后经常会服务器编译不通过需要修改的情况简单的修改可以直接在网页中修改但是内容多了在网页修改就比较麻烦了这时候就需要追加提交代码。假日第一笔代码已经提交完成本地代码已经提交现在需要合并到之前的提交中代码提交到暂存区git add .使用 --amend 追加到上次提交git commit --amend --no-edit强制推送代码到服务端git push --force-with-lease origin branch-name其中 --no-edit 表示沿用上一次提交的 commit message不弹出编辑器如果想同时修改提交信息去掉该参数即可。如果代码还未推送下一步正常push就可以如果已经推送则需要再次强制推送注意 --force-with-lease 会在远程分支已被他人更新时拒绝推送避免覆盖别人的工作。3、版本回退git reset --mixed(默认)将指定 commit id 撤回之后所有内容全部放进工作区中。可以省略 --mixed直接使用 git reset。回退到上一个版本git reset HEAD^回退指定文件到上一个版本git reset HEAD^ xxx.java回退到指定版本git reset 版本IDreset--soft将指定 commit id 撤回之后所有内容全部放进暂存区。回退上上上一个版本git reset --soft HEAD ~3reset --hard将指定 commit id 撤回并清空工作目录及暂存区所有修改。撤销工作区中所有未提交的修改内容将暂存区与工作区都回到上一次版本并删除之前的所有信息提交。回退上上一个版本 git reset --hard HEAD~2回退到指定版本git reset –hard 版本ID与远程代码同步git reset --hard origin/master谨慎使用 –-hard 参数它会删除回退点之前的所有信息。远端对齐如果本地没有修改或者放弃本地修改可以直接使用远端对其。git reset --hard origin/xxx_xxxHEAD 说明HEAD 表示当前版本HEAD^ 上一个版本HEAD^^ 上上一个版本HEAD^^^ 上上上一个版本以此类推...可以使用 数字表示HEAD~0 表示当前版本HEAD~1 上一个版本HEAD~2 上上一个版本HEAD~3 上上上一个版本git reset HEADgit reset HEAD 命令用于取消已缓存的内容。例如我们需要撤销 commit1git revert commit1执行上述命令后git 会创建一个名为 Revert commit1 的新提交该提交会删除 commit1 的所有修改。需要注意的是git revert 命令不会删除历史提交因此更加安全和可靠。git revertgit revert 命令会创建一个新的提交该提交会反转我们指定的提交内容。4、取消本地修改有时我们会误修改了文件或者不想提交某些文件而又不想删除它。这时我们可以使用git取消修改命令来撤销这些修改。放弃单个文件修改git checkout -- 文件名称放弃所有文件修改git checkout .git checkout 命令可以用来切换分支或者恢复文件。当我们使用 git checkout -- 文件名命令来恢复文件时它会将该文件回退到最近的提交状态。也就是说该文件的所有修改都将被取消。 注意不要忘记中间的--不写就成了检出分支了。5、Gerrit网站操作修改提交内容1点击右上角 EDIT 按钮进入编辑模式。2点击进入要修改的代码并进行修改。3点击右上角的 SAVE 保存代码。4保存成功点击右上角的 CLOSE 按钮退出代码编辑界面。5修改完成点击右上角的PUBLISH DEIT按钮发布代码即可。放弃本次提交使用 ABANDON 功能放弃本次提交同时还需要在本地分支使用命令 git reset HEAD^ 回退版本。再重新提交。增加提交文件增加提交文件功能主要用于在提交了一笔内容后在同一个工程下还有一个文件需要简单修改这时如果提交内容在本地还有其他修改退回并重新提交显然是比较麻烦的我们就可以 git 网站上直接增加新文件的修改。1点击右上角 EDIT 按钮进入编辑模式。2点击修改代码文件上面的 ADD/OPEN/UPLOAD 选项。3在弹出的提示框中直接输入要修改的文件路径或者选择要增加的文件。4文件选择完成后直接进入文件编辑页面这时就可以直接修改新增文件了。查找对应分支通常修改一段代码后需要知道该代码都用在了哪些分支上可以使用如下步骤查找1点击操作栏 BROWSE 后选择 Repositories。2再输入框中输入修改文件对应的路径点击对应的搜索内容。3选择这边栏的 Branches 选项。这样就可以直接查看对应的分支列表。同时在该页面也可以复制对应的 ssh 链接直接粘贴到命令窗口进行对应的的代码下载。6、修改提交地址在提交代码模块下找到 .get 文件夹修改 config 文件中的 url 地址即可五、查看暂存区查看暂存区中文件信息git ls-files–cached(-c)显示暂存区中的文件git ls-files命令默认的参数–deleted(-d)显示删除的文件–modified(-m)显示修改过的文件–other(-o)显示没有被git跟踪的文件–stage(-s) 显示mode以及文件对应的Blob对象进而我们可以获取暂存区中对应文件里面的内容。六、配置SSH1、Windows系统查看SSH命令vim ~/.ssh/id_rsa.pub输入o 回车退出查看按esc输入 :q配置SSHssh-keygen -t rsa -C 个人邮箱ssh-agent bashssh-add ~/.ssh/id_rsa添加到Gerrit进入 Gerrit 设置界面选择 SSH Keys添加上面的 SSH Keys 即可。2、Linux系统在主目录下找到 .ssh 文件夹这里就是 ssh 相关信息。查看SSH找到 /.ssh/id_rsa.pub 文件双击打开即可。配置SSH找到 /.ssh/config 文件并使用下面命令打开文件双击打开文件可以查看但无法编辑。sudo gedit config配置 gerrit 信息Host 192.168.1.1HostName 192.168.1.1User xiaoxuIdentityFile ~/.ssh/id_rsa添加到Gerrit进入 Gerrit 设置界面选择 SSH Keys添加上面的 SSH Keys 即可。七、patch使用1、.patch文件生成补丁生成最近1次commit的patchgit format-patch HEAD^ 或 git format-patch -1 HEAD生成最近2次commit的patchgit format-patch HEAD^^ 或 git format-patch -2 HEAD生成单个commit的patchgit format-patch -1 r1r1为commit id应用单个补丁检查patch文件git apply --stat newpatch.patch检查能否应用成功git apply --check newpatch.patch打补丁git am --signoff newpatch.patch打补丁时可以使用 -s 或 --signoff 选项可以commit信息中加入 Signed-off-by 信息批量应用补丁git am --abortgit am patch/*.patch2、.diff文件对于 patch 除了上面的 .patch 文件类型之外还有 .diff 等其他文件类型的不行这里介绍 .diff 类型文件主要是在 Gerrit 网站的对应提交页面中可以直接下载该类型的 patch 文件。这里选择 Download patch 下载的就是 .diff 类型的 patch 文件当然 .diff 类型的文件也是可以通过 git 命令进行生成。相关命令生成补丁git diff changes.diff检查补丁git apply --check changes.diff应用补丁 git apply changes.diff冲突处理有时在合并代码的时候回存在冲突这是直接使用上面的命令会报异常导致合并失败这时我们可以使用下面命令强制合并再对冲突代码进行手动处理。强制合并git apply --reject changes.diff使用强制合并命令生成 .rej 文件我们可以参考 .rej 文件对冲突代码进行处理最后删除对应的 .rej 文件即可。八、Git LFSGit 本地会保存文件所有版本对于大文件很容易导致仓库体积迅速膨胀Git LFSLarge File Storage是一个 Git 的扩展用于实现 Git 对大文件的支持。简单的说就是如果你想传超过100M的二进制文件到 GitHub你就要用 Git LFS。1、代码更新使用了 LFS 上传代码后下载代码是也会有所区别指定目录下更新代码git lfs pull全部更新repo sync后执行repo forall -c git lfs pull2、异常处理Encountered 7 file(s) that should have been pointers, but weren‘tGit 仓库启用了 LFS更新代码时莫名其妙的显示一些出现修改然而使用上面的一些丢弃命令、覆盖更新等都不起作用都会出现上面的错误。直接一次性执行下面命令git rm --cached -r .;git reset --hard;git rm .gitattributes;git reset .;git checkout .九、代码暂存使用场景在 branch_1 上修改了部分代码这时 branch_2 项目来了一个急需修改的 Bug并且要修改的位置与 branch_1 还相同。由于 branch_1 还未修改完成无法提交而且由于有修改代码也无法切换分支。这就需要使用到暂存功能先将 branch_1 的修改暂存在修改完 branch_2 的 Bug 后回到 branch_1 取出暂存继续修改即可。查看保存git stash list保存git stash save 自定义命名恢复保存git stash apply 00为列表id删除保存数据git stash drop stash{1}十、其他1、查看Log上次提交git show提交历史git log文件修改详情git log -p 文件名称文件修改历史git blame 文件名称2、帮助命令git help3、提交对比安装sudo apt install gitk使用gitk4、查看Gerrit信息git remote -v更多功能https://mp.weixin.qq.com/s/8lhyBCnvOst2iKy-UFUo3Q
延伸阅读

更多相关文章

2026/10/22 20:31:07

LeetCode 5:最长回文子串

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 20:26:06

纯Java构建企业级Agent Harness:BizBuddy平台架构设计与实践

1. 为什么我要用纯 Java 去啃 Agent Harness 这块硬骨头市面上聊 Agent 框架的内容,十篇里有八篇是 Python 的。LangChain、AutoGPT、CrewAI,清一色 Python 生态,好像做智能体就必须跟 Python 绑定。我在一个以 Java 为主力技术栈的团队里待了…

2026/10/22 21:51:52

PyTorch Unfold 全解析:滑动窗口、Patch 提取与 Fold 避坑指南

如果你碰过 Vision Transformer 的前处理、写过图像修复里的相似块匹配,或者只是想把一张图像按固定大小、固定步长切成一堆窗口,多半会有这样的一瞬间:循环写到一半,突然意识到 PyTorch 里好像有个函数天生就是干这个的。对&…

2026/10/22 21:51:52

Java工程师的LLM应用开发实战:LangChain4j入门与避坑指南

Java 后端做 LLM 应用这件事,过去两年我一直处于一种“看 Python 那边热闹,自己这边没趁手兵器”的状态。直到把 LangChain4j 完整跑下来几个项目,才确定这确实是 Java 生态里最值得投入的一条路。这篇不是官方文档翻译,是我从零上…

2026/10/22 21:51:52

Java开发者转型AI Agent:无需先学Python,用Java直接开干

这几年,AI Agent几乎是Java开发者群里出现频率最高的词。作为干了13年的Java后端,我一开始也是听着“AI必须要学Python”的说法,怀着被时代抛下的焦虑准备转型。后来走了不少弯路,也和身边一批同样在做AI应用的朋友复盘过&#xf…

2026/10/22 21:51:52

SSM+Flask组合实战:驾校信息管理系统从设计到部署完整复盘

先分享一个场景。有位同学在某驾校的报名大厅里蹲了一下午,回来跟我说,他数了一下,前台桌面上摊着四类表格:报名登记表、科目学时卡、教练排班表、缴费收据存根,分别对应四个Excel文件,其中的数据还要靠人肉…

2026/10/22 21:51:52

云服务器容器化实战:从镜像构建到编排踩坑全解析

早几年在云服务器上部署一个完整的项目,我的标准操作流程是:买一台云服务器,先重装系统,然后一件件安装编译环境、数据库、运行时、网关,再手工改配置、互相排错。每次从零搭环境都要耗掉大半个下午,换一台…

2026/10/22 21:46:48

Agent Infra深度拆解:从任务编排到安全沙箱的智能体工程底座

聊Agent的人越来越多,但真正把Agent Infra当正事聊的人还是太少。我最近大半年一直在折腾智能体基础设施,有个很强烈的感受:几家头部大厂在模型层面的军备竞赛已经白热化,但真正悄无声息投入最猛的,其实是模型之上那一…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑