1

我的公司使用Gerrit Code Review for Git。每次我想推送代码更改时,我都会使用自定义咒语:

git push origin HEAD:refs/for/my-branch-name

除了“我的分支名称”之外,就是逐字记录。语法对我来说似乎很疯狂,这refs/for/不是我以前在 Git 中见过的东西。

如何配置我的仓库,以便git push单独与上述相同?

4

3 回答 3

2

这种语法并不疯狂,它只是完整的git push语法。当你自己做时git push,它真的是:

git push origin current-branch:refs/heads/current-branch

您可能正在使用 gerrit 进行代码审查,因此您不想直接推送到特定分支,而是想让 gerrit 知道更改 - gerrit 使用该refs/for区域来实现此目的。

较新版本的 gerrit 使用refs/publishand refs/drafts,因此您也可能会看到这些。

如果你想要更方便的东西,你可以轻松地创建别名并将它们添加到你的 git 配置中。看看这个问题:git alias for HEAD:refs/for/master

于 2012-12-20T00:22:57.620 回答
2

您可以通过键入来更新遥控器的推送参考规范

git config remote.origin.push HEAD:refs/for/my-branch-name

我创建了一个git post-checkout 挂钩,确保所有分支(和主分支)都配置为与 gerrit 一起使用。我认为它有效,但您的工作流程可能与我的不同,因此请在使用之前阅读脚本并理解它(这并不难)。

于 2013-01-10T20:04:26.640 回答
0

refs/for/....是 Gerrit 用来触发和跟踪特定分支的代码审查的“神奇”参考。这记录在http://gerrit-documentation.googlecode.com/svn/Documentation/2.5.1/user-upload.html

您需要推送到此 ref 以便 Gerrit 可以获取您的更改并开始代码审查过程。

如果您刚刚这样做,git push origin master那么它将绕过 Gerrit,因为您的提交已经在 master 分支中。Gerrit 的重点是确保您的代码在进入master(或其他)之前经过审查。

于 2012-12-20T00:22:31.177 回答