gerrit和git(gerrit组件---gitweb原理及安装)

本文目录
gerrit组件---gitweb原理及安装
yum -y install gitweb
***隐藏网址***
在末尾添加
##gitweb
《Directory"/var/www/git"》 ###yum安装gitweb默认有的
AddHandler cgi-script .cgi
DirectoryIndex index.cgi gitweb.cgi
Order allow,deny
Allow from all
《/Directory》
***隐藏网址***
***隐藏网址***
a。vim /etc/gitweb.conf
在最末行加上
$projectroot = "/localdisk/gerrit/git" ###gerrit中git库文件位置
b。vim /localdisk/gerrit/etc/gerrit.config ####修改gerrit配置文件
在后面添加
【gitweb】
type = gitweb
cgi = /var/www/git/gitweb.cgi
c。重启gerrit
/localdisk/gerrit/bin/gerrit.sh restart
为什么commit会产生大量的merge记录
如标题描述,最近关于这个gerrit的submit type的设置引起了一个问题,我大概模拟了下开发的提交场景,如下:
开发A和开发B都在修改仓库repo_test的代码,开发A修改test1.txt 然后提交到gerrit上,并在gerrit上合入了这个提交(commitA),开发B没有执行git pull, 直接修改了test2.txt, 这个test2.txt和test1.txt没有任何关联性,是完全不相关的模块,然后开发B提交gerrit,然后gerrit上合入了这个提交(commitidB),此时,由于开发B的这个提交相对服务器少了开发A的改动提交,就自动生成了一条merge(叫commitB+吧),比如如下:
以上,B+是自动生成的merge,这个自动merge的记录在gerrit上是看不到的,真正的修改是在B,所以开发在gerrit上找到B,让我(职位:CM)在B节点标记tag,我在B标记tag后打包(我执行git checkout B),发现没有A的修改了,这就出问题了!!!但是git checkout B+就有A的提交!!
然后发现,是因为开发B没执行git pull ,没把A的改动带进去,所以提交的时候就自动产生了这个merge的提交记录,话说,使用rebase就不会产生,但是怎么搞呢?
然后发现了gerrit的submit type 可以控制:
默认的是“Merge if Necessary”, 这个就是在有差异的时候自动生成一条merge记录
所以换成“Rebase if Necessary”,这个会自动rebase,不会自动产生merge记录
如下是gerrit换成“rebase if Necessary”的提交记录:
STM32 对内部FLASH读写接口函数(转)
ymodem协议c实现(转)
STM32启动模式及API(转)
Keil STM32调试,使用ST-Link下载程序时提示“flash timeout.reset the target and try it again”
UVA 11020
LeetCode Maximal Square
Android中的消息机制
关于DPM(Deformable Part Model)算法中模型可视化的解释
Node.js能够做什么?
hdu 1071 The area
Linux经常使用命令(九)
hdu 4248 A Famous Stone Collector (DP+组合)
linux程序设计——个人总结
poj3252-Round Number 组合数学
QML与C++交互:登陆界面设计
delphi2010发送邮件—中文显示为乱码解决
WCF探索之旅(五)——WCF与WebService的异同
数据库备份还原,日志清理代码
【Android】自己定义View、画家(画布)Canvas与画笔Paint的应用——绘图、涂鸦板app的实现
Berkeley DB基础教程
SSL和SSH的差别
gerrit分支集成以后可以撤销吗
由于太多人问怎么撤销 merge 了,于是 git 官方出了这份教程,表示在 git 现有的思想体系下怎么达到撤销 merge 的目标。
方法一,reset 到 merge 前的版本,然后再重做接下来的操作,要求每个合作者都晓得怎么将本地的 HEAD 都回滚回去:
$ git checkout 【行merge操作时所在的分支】
$ git reset --hard 【merge前的版本号】
方法二,当 merge 以后还有别的操作和改动时,git 正好也有办法能撤销 merge,用 git revert:
$ git revert -m 【要撤销的那条merge线的编号,从1开始计算(怎么看哪条线是几啊?)】 【merge前的版本号】
Finished one revert.
Revert "Merge branch ’jk/post-checkout’"
1 files changed, 0 insertions(+), 2 deletions(-)
这样会创建新的 commit 来抵消对应的 merge 操作,而且以后 git merge 【那个编号所代表的分支】 会提示:
Already up-to-date.
因为使用方法二会让 git 误以为这个分支的东西都是咱们不想要的。
方法三,怎么撤销方法二:
$ git revert 【方法二撤销merge时提交的commit的版本号,这里是88edd6d】
Finished one revert.
Revert "Revert "Merge branch ’jk/post-checkout’""
1 files changed, 2 insertions(+), 0 deletions(-)
这样就行了,可以正常 merge 了,不过可能会有很多冲突噢!!
$ git merge jk/post-checkout
Auto-merging test.txt
Merge made by recursive.
test.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
最后的最后,还是觉得顶上那些都麻烦爆了。前端天天用 WebStorm 写代码的看过来: WebStorm 右键点击项目文件或文件夹,有一个:
Local History -》 Show History
点开后出现一个窗口,可以看到所有的本地改动。找到合适的那份,按左上角那个:
Revert
按钮,也就是个紫色的弯曲的小箭头就回去了。在文件量不大的时候十分管用,强烈推荐

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30
vba编写excel插件(excel vba中能否动态创建控件)
2026年9月7日 04:40





