[英]How to merge the Gerrit branch to another Gerrit branch
我正在使用Gerrit 2.4.2版。 我有一個分支master
並創建了一個新分支,稱為newbranch
。 然后,我對遠程(Gerrit的) newbranch
進行了一些更改。 在Gerrit中進行驗證后,我將更改合並到newbranch
。
不,我想將newbranch
合並到master
,發送更新master
(與newbranch
更改合並),並刪除newbranch
分支。
我嘗試這樣做:
git fetch
git checkout master
git merge newbranch
git push origin master:refs/for/master
但是Gerrit給出了以下信息:
! [remote rejected] master -> refs/for/master (no new changes)
我該怎么辦?
據報道,這種情況是Gerrit中的錯誤。 這是Gerrit問題追蹤器的解決方案/解決方法:
據我所知,您目前有2種選擇-
強制推至裁判/裁判。 這只是一個飛速前進,因此從理論上講,所有內容都已經過審查和驗證。 再次這樣做是沒有意義的,因此只需跳過該過程,然后推送到裁判/標頭,而不是裁判/ for。
繼續並創建合並提交。 使用'git merge --no-ff'-即使您不需要快速前進,這也會創建合並提交。 然后,合並提交可以像正常情況一樣上載,查看,驗證和合並。
我的公司傾向於選擇選項2。我將其關閉為wontfix,但是如果您對如何更好地做到這一點有任何建議,請告訴我們。
如果合並是快進合並,則不存在要推送到gerrit的對象,因為快進只是移動分支指針。
您需要通過避免快進來強制合並以創建對象:
git merge --no-ff
以下命令可以正常工作。
git checkout master
git merge --no-ff newbranch
您可以使用默認提交消息進行保存。 確保已生成更改ID。 您可以使用以下命令進行確認。
git commit --amend
然后使用以下命令進行推送。
git push origin HEAD:refs/for/refs/heads/master
您可能會遇到類似以下的錯誤消息。
! [remote rejected] HEAD -> refs/for/refs/heads/master (you are not allowed to upload merges)
要解決此問題,gerrit項目管理員必須在gerrit中創建另一個引用,名為“ refs / for / refs / heads / master”或“ refs / for / refs / heads / *”(以后將涵蓋所有分支)。 然后,向此引用授予“推送合並提交”權限,如果需要提交GCR,則授予“提交”權限。
現在,再次嘗試上述push命令,它應該可以工作。
學分:
https://github.com/ReviewAssistant/reviewassistant/wiki/Merging-branches-in-Gerrit
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.