我的公司對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