Respostas:
A documentação do Gerrit, em particular a seção "Alterações por push" , explica que você envia para a " refs/for/'branch'referência mágica usando qualquer ferramenta cliente do Git".
A imagem a seguir é retirada da Introdução à Gerrit . Quando você empurra para Gerrit, você faz git push gerrit HEAD:refs/for/<BRANCH>. Isso envia suas alterações para a área de preparação (no diagrama "Alterações pendentes"). Gerrit na verdade não tem um ramo chamado <BRANCH>; está ao cliente git.
Internamente, a Gerrit tem sua própria implementação para as pilhas Git e SSH. Isso permite que você forneça as referências "mágicas" refs/for/<BRANCH>.
Quando uma solicitação push é recebida para criar uma referência em um desses espaços para nome, o Gerrit executa sua própria lógica para atualizar o banco de dados e, em seguida, mente ao cliente sobre o resultado da operação. Um resultado bem-sucedido faz com que o cliente acredite que a Gerrit criou a ref, mas, na realidade, a Gerrit não criou a ref. [ Link - Gerrit, "Detalhes detalhados" ].

Após um patch bem-sucedido (ou seja, o patch foi enviado para a Gerrit, [colocando-o na área de preparação "Pending Changes"], revisado e a revisão foi aprovada), Gerrit envia a alteração de "Pending Changes" para o " Repositório autoritativo ", calculando em qual ramificação o envio deve ser baseado na mágica em que você foi enviado refs/for/<BRANCH>. Dessa forma, os patches revisados com sucesso podem ser extraídos diretamente das ramificações corretas do Authoritative Repository.
Para evitar ter que especificar completamente o comando git push, você pode modificar o seu arquivo de configuração 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
Agora você pode simplesmente:
git fetch gerrit
git push gerrit
Isso é de acordo com Gerrit
remote.origin.pushvez de digitar / colar todas as vezes!
git fetche git pushcom a configuração @DavidDoria mencionada acima.