我刚刚开始使用 gerrit,我想知道为什么我们需要做 git push gerrit HEAD:refs/for/master 而不是 git push origin master
如果我做 git push origin master 我得到错误说 ! [remote rejected] master -> master (prohibited by Gerrit)

最佳答案

Gerrit 的文档,特别是 "Push changes" 部分,解释了您使用任何 Git 客户端工具推送到“神奇的 refs/for/'branch' 引用”。

下图取自 the Intro to Gerrit 。当您推送到 Gerrit 时,您会执行 git push gerrit HEAD:refs/for/<BRANCH> 。这会将您的更改推送到暂存区(在图表中,“待定更改”)。 Gerrit 实际上并没有一个名为 <BRANCH> 的分支;它对 git 客户端说谎。

在内部,Gerrit 有自己的 Git 和 SSH 堆栈实现。这允许它提供“神奇”的 refs/for/<BRANCH> 引用。



git - 为什么 git push gerrit HEAD :refs/for/master used instead of git push origin master-LMLPHP

补丁成功后(即已将补丁推送到 Gerrit,[放入“Pending Changes”暂存区],审核,审核通过),Gerrit 将变更从“Pending Changes”推送到“权威存储库”,根据推送到 refs/for/<BRANCH> 时它所做的魔法计算将其推送到哪个分支。这样,可以直接从 Authoritative Repository 的正确分支中提取成功审核的补丁。

关于git - 为什么 git push gerrit HEAD :refs/for/master used instead of git push origin master,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10461214/

10-14 00:43