Answers:
Gerrit的文档,特别是“ Push changes”部分,说明您将推送至“ refs/for/'branch'
使用任何Git客户端工具的魔术引用”。
下图是从Gerrit简介拍摄的。当您选择Gerrit时,您会这样做git push gerrit HEAD:refs/for/<BRANCH>
。这会将您的更改推送到登台区域(在图中,“待更改”)。Gerrit实际上没有一个名为的分支<BRANCH>
。它在于git客户端。
在内部,Gerrit对Git和SSH堆栈具有自己的实现。这使其可以提供“魔术” refs/for/<BRANCH>
参考。
当收到在这些名称空间之一中创建引用的推式请求时,Gerrit会执行其自己的逻辑来更新数据库,然后向客户端介绍操作结果。成功的结果使客户相信Gerrit已创建引用,但实际上Gerrit根本没有创建引用。[ 链接-Gerrit,“ Gritty详细信息” ]。
成功修补程序后(即,修补程序已推送到Gerrit,[将其放入“待更改”暂存区”,进行了审核,并且审核已通过),Gerrit将更改从“待更改”推送到了“权威存储库”,根据您推送到时的魔术来计算将其推送到哪个分支refs/for/<BRANCH>
。这样,可以将已成功查看的补丁直接从的正确分支中提取Authoritative Repository
。
为了避免完全指定git push命令,您可以选择修改git config文件:
[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
据格里特说
remote.origin.push
而不是每次都要键入/粘贴它,就会更好!
git fetch
,并git push
与配置@DavidDoria如上所述。