当 git 推送 origin HEAD:refs/for/branch 时会发生什么

What happens when git push origin HEAD:refs/for/branch

我一直在使用这个命令在 Gerrit 中推送我的代码..

git push origin HEAD:refs/for/branch

但是,最近我正在研究一个没有 Gerrit 管道的基础设施。我可以进行推送,但无法看到 git 上的分支。当我 运行:

git push origin branch

可以在git上看到。我正在本地创建的新分支上尝试此操作。

命令 git push 的工作方式如下:

git push REPOSITORY SOURCE_REFSPEC:DESTINATION_REFSPEC

使用 Gerrit,当您使用:

git push origin HEAD:refs/for/branch

您要求Git:

  • 存储库=来源

推送到原始存储库(默认情况下,您从中克隆的存储库)

  • SOURCE_REFSPEC=头部

推送工作树的当前提交

  • DESTINATION_REFSPEC=refs/for/branch

将提交推送到 "branch" 以在 Gerrit 上进行审核。 "refs/for/" 前缀是一个 "magical" 分支,"instruct" Gerrit 必须创建代码审查。查看有关此内容的更多信息 here

只有在使用 Gerrit 时,"refs/for/" 前缀才有意义。

最后,如果您不使用 Gerrit 并执行 "git push origin branch",您会将当前提交推送到 "origin" 存储库上的 "branch" 分支。