簡體   English   中英

如何將Gerrit分支合並到另一個Gerrit分支

[英]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種選擇-

  1. 強制推至裁判/裁判。 這只是一個飛速前進,因此從理論上講,所有內容都已經過審查和驗證。 再次這樣做是沒有意義的,因此只需跳過該過程,然后推送到裁判/標頭,而不是裁判/ for。

  2. 繼續並創建合並提交。 使用'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

https://stackoverflow.com/a/21199818/3877642

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM