为什么git推送Gerrit头:参考/for/master而不是git推送原版母版?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我刚刚开始使用Gerrit,我想知道我们为什么要这么做git push gerrit HEAD:refs/for/master而不是做git push origin master

如果我做了git push origin master我听到错误说! [remote rejected] master -> master (prohibited by Gerrit)

提问于
用户回答回答于

参考文献

当接收到在其中一个名称空间中创建Ref的推送请求时,Gerrit执行自己的逻辑更新数据库,然后将操作结果告知客户端。一个成功的结果使客户相信Gerrit已经创建了Ref,但实际上Gerrit根本没有创建这个引用。

经过一个成功的修补程序(即,补丁已经被推到Gerrit,将其放入“挂起的更改”暂存区域。),Gerrit将更改从“未决更改”推入“权威存储库”,并根据它在你推送时所做的魔术计算要将其推入哪个分支。refs/for/<BRANCH>。这样,就可以直接从Authoritative Repository

用户回答回答于

为了避免完全指定git Push命令,可以另外修改git配置文件:

[remote "gerrit"]
    url = https://your.gerrit.repo:44444/repo
    fetch = +refs/heads/master:refs/remotes/origin/master
    push = refs/heads/master:refs/for/master

现在可以简单地:

git fetch gerrit
git push gerrit

扫码关注云+社区