我的公司对Git使用Gerrit Code Review。我一直在考虑一个自定义的咒语,用我想要把代码的每一次变化:默认推送的自定义操作
git push origin HEAD:refs/for/my-branch-name
比“我的分支,名为”其他,就是这样一字不差。 refs/for/
语法对我来说似乎很疯狂,而且这不是我之前在Git中看到的。
如何配置我的回购,以便git push
单独与上述相同?
我的公司对Git使用Gerrit Code Review。我一直在考虑一个自定义的咒语,用我想要把代码的每一次变化:默认推送的自定义操作
git push origin HEAD:refs/for/my-branch-name
比“我的分支,名为”其他,就是这样一字不差。 refs/for/
语法对我来说似乎很疯狂,而且这不是我之前在Git中看到的。
如何配置我的回购,以便git push
单独与上述相同?
您可以通过键入
git config remote.origin.push HEAD:refs/for/my-branch-name
我创建了一个git post-checkout hook是确保所有分支(主动)被配置为使用更新推裁判规格为您的远程格里特。我认为它可行,但你的工作流程可能与我的不同,所以在使用它之前阅读脚本并理解它(不难)。
refs/for/....
是Gerrit用来触发并跟踪特定分支的代码评论的“神奇”参考。这是记录在http://gerrit-documentation.googlecode.com/svn/Documentation/2.5.1/user-upload.html
你需要推到这个参考,使Gerrit可以拿起你的变化,并开始代码审查过程。
如果你只是做了git push origin master
那么它会绕过Gerrit,因为你的提交已经在master分支。 Gerrit的重点在于确保您的代码在进入master
(或其他)之前得到审查。
是的,但是这并不回答关于如何配置回购的问题,以便'git push'为我做出魔法咒语。 – Phrogz
你可以创建一个git别名来做到这一点。 – regulatethis
鉴于这是完整的问题,也许你应该修改你的“答案”来说明如何做到这一点。否则,这是一个有用的评论,但不是答案。 – Phrogz
该语法并不疯狂,它只是完整的git push
语法。当你这样做本身git push
,它确实有效了出来:
git push origin current-branch:refs/heads/current-branch
你可能会使用代码审查格里特,所以不是只需直接推到一个特定的分支,你想让格里特了解改变 - gerrit使用refs/for
区域用于此目的。
更新版本的gerrit使用refs/publish
和refs/drafts
,所以你可能也会看到这些。
如果你想要更方便的东西,你可以很容易地制作别名并将它们添加到你的git配置中。看看这个问题:git alias for HEAD:refs/for/master
另请参阅相关问题[“为什么git push gerrit HEAD:refs/for/master而不是git push origin master”](http://stackoverflow.com/q/10461214/405017)。 – Phrogz
重复[git alias for HEAD:refs/for/master](http://stackoverflow.com/questions/7423893/git-alias-for-headrefs-for-master) – Phrogz