我想將單個提交推送到Gerrit,而不影響同一主題分支中的其他提交。不幸的是,我沒有Gerrit的測試實例進行試驗。Gerrit工作流 - 將單個提交推送到主題分支
場景: 我已經爲該項目貢獻了一個主題分支,該項目正在審覈中,其他開發人員已更新其部分內容。現在我希望對他們的更新進行更改。
要做到這一點,我要提交其他開發人員在我希望編輯的提交中進行的更改,在本地進行交互式重新分頁以進行自己的更改,然後推送給Gerrit,確保Change-Id仍然相同。這會將該文件的新版本添加到補丁集以供審閱。
問題: 當我試圖把單一的承諾格里特,在主題分支對方提交也被推,覆蓋其他開發人員的變化。
這裏是我使用的語法:
git push gerrit 3089c9f56542461dce738a9aa17bb743ed36e038:refs/publish/master/my-topic-branch
我相信,在主題分支的其他提交也被推因爲格里特產生依賴。
請問這種方式工作,而不是,留出了問題分支標題?:
git push gerrit 3089c9f56542461dce738a9aa17bb743ed36e038:refs/publish/master
我試過這種方法成功之前,推到具體變更:
git push gerrit a95cc0dcd7a8fd3e70b1243aa466a96de08ae731:refs/changes/12345
然而,在嘗試這種再次我現在得到一個解壓錯誤:
error: unpack failed: error Missing tree 9172313b907b160d15e260d5f7d51689f467b858
相關問題: 當我從Gerrit中抽取其他開發人員的更改時,如何確保已將所有在主題分支中提供的文件都拉出來?如果我在主題分支中選擇Gerrit中最頂層的更改,並使用web ui中聲明的pull命令,則主題分支中的某些文件似乎在本地更新,但並非全部更新。我是否需要通過主題分支中的每個提交併發出相關的pull命令?
看看也許我沒有正確地理解你的問題。你說你已經「拉動了他們的改變(或者提交)並且互動地改變了他們」......在你提到的問題中「主題分支中的其他提交也被推送了」......因爲這些改變已經存在......爲什麼會你擔心?還是你的意思是你的其他改變被推? – Vikram
問題是,當我從該特定提交(這是我想要編輯的唯一一個提交)中提取更改時,並非我所有的本地文件(即該主題分支的一部分)都被更新。請參閱「相關問題」部分。因此,當我推送已更改的提交,並且主題分支中的其他提交也被推送時,它們通常比Gerrit上的當前更早,並覆蓋其他開發人員所做的更改。 – Lemmy
關於「相關問題」部分:要確保您是否拉取了主題分支提供的所有文件,請從第一個「patchset 1」或「patchset n」開始,如果您確定具有所需的所有文件。做一個'git pull --rebase refs/changes /#/#/ patch#'從下一個補丁開始,直到最近的補丁集。重新綁定所有補丁後,對壓縮提交很重要。奇怪的'git狀態'可能會或可能不會顯示任何本地提交。 –
Vikram