Gerrit 使用git常见问题

目录

git push 失败报错! [remote rejected] master -> master (prohibited by Gerrit)

git push报错 ERROR: missing Change-Id in message footer


git push 失败报错! [remote rejected] master -> master (prohibited by Gerrit)

解决方法:

$git push origin HEAD:refs/for/master

master可以替换为你分支的名字

原理:

这是在Gerrit上的使用限制,和git本身无关。

refs 的含义:Branches, remote-tracking branches, and tags等等都是对commite的引用(reference),引用都以 “refs/……”表示. 比如remote branch: origin/git_int(=refs/remotes/origin/git_int), local tag: v2.0(=refs/tags/v2.0), local branch: git_int(=refs/heads/git_int)…

规则上 refs/for/master 需要经过code review之后才可以提交;refs/heads/master 不需要code review

如果项目配置了需要code review的话就会遇到这种报错(一般项目默认配置成需要)

如果直接使用

$git push

其实就会自动扩展为

$git push origin HEAD:refs/heads/master

 Gerrit会按照不执行code review的方式提交,从而导致和远程代码库冲突,此时只需要按照上面解决方法里的方式传参就可以正常使用啦~

git push报错 ERROR: missing Change-Id in message footer

解决办法:

复制报错信息下面的三行命令,执行即可;其中有两条在一起,以分号隔开的

$gitdir=$(git rev-parse --git-dir); 
$scp -p -P 端口号 xxx地址@xxxx:hooks/commit-msg ${gitdir}/hooks/
$git commit --amend --no-edit

上面指令提供参考,第二条需要替换成自己的端口号和地址url

可以直接从报错信息下方复制后执行

原理:

本地hooks/commit-msg文件内容缺失,需要从远端服务器重新下载,下载后重新执行提交操作

只有第一次拉取远程文件的时候会遇到这个问题,之后就可以正常使用了

你可能感兴趣的:(小白教程,开发者工具,git)