2017-10-10 67 views
1

我的一位同事犯了一個在Gerrit但不在主人身上的代碼。我想在其上工作。我應該櫻桃挑選還是簽出一份承諾,以便在gerrit的頂部工作?

我應該創建一個本地分支,然後櫻桃選擇他的提交和工作嗎?或者我應該檢查他的代碼並創建一個本地分支並在其上工作。

哪一個纔是正確的做法?

任何幫助,將不勝感激

+0

你是什麼意思是「在gerrit而不是在主人」? 1.被推送/提交給另一個分支2.被推送給主,但尚未提交。 –

+0

它被推到主,但它還沒有提交 –

回答

2

提取和檢查他的承諾,我稱之爲一個無名的分支(如refs/changes/xx/yyyxx/1一個引用),然後在它的工作。無論它是分離的HEAD狀態還是創建本地分支都無關緊要。完成提交後,請推送至refs/for/<branch>。你的提交和他的將依賴。

更新:

這沒關係櫻桃挑選他的承諾,然後在它上面的工作,如果你不關心歷史,因爲最終版本的文件內容會以兩種方式同。區別在於分支歷史。如果你檢查他的,然後在其上工作,歷史將是線性的。至少圍繞你們提交的部分是線性的。如果你挑選他,然後在其上工作,你會看到兩個分支合併。一個是你的本地分支,另一個是他的本地分支。他們分歧。在你的分支上挑選的提交是多餘的。將來某一天,當有人看到歷史時,他可能會感到困惑,並問爲什麼你們兩個人都對相同的塊進行了修改。

此外,由於您使用的是Gerrit,因此可能存在潛在風險,可能會引起您的煩惱。當你挑選他的提交時,將會創建一個新的提交。這兩個提交具有相同的提交消息,包括Change-Id。如果您的同事已提交/合併,您的同事推動了他,並且Gerrit將阻止您的同事,因爲Gerrit不允許在此情況下將同一個Change-Id推送到同一分支。如果他仍然打開,那麼你的第二個補丁集將被修改。但是我恐怕你的格里特也禁止一個人修改別人的承諾。即使它允許你修改他的提交,也沒有預料到。無論如何,它會失敗或行爲不當。據我所知,這是非常令人沮喪的,尤其是當其他人推動你儘快完成它時。

+0

只是好奇,爲什麼櫻桃挑選和工作之上呢? 感謝您的快速回復。 –

+0

@VivekS我更新了答案。 – ElpieKay

0

執行以下操作:

1)轉到你的同事變化對格里特

2)點擊下載>收銀臺> 「複製到剪貼板」 按鈕

3)在執行復制命令你的本地庫

git fetch https://[email protected]/a/REPO-FULL-PATH refs/changes/CHANGE-NUMBER/CHANGE-PATCHSET && git checkout FETCH_HEAD 

4)建立本地分支機構來管理你的工作

git checkout -b LOCAL-BRANCH 

5)進行更改

6)加入並提交更改

git add . 
git commit 

7)推到格里特審查

git push origin HEAD:refs/for/master 

注意:你的變化是取決於你的同事改變。如果他/她推送一個新的補丁集(例如修復一些審閱問題),則需要將您的更改重新分配給新的補丁集。如果他/她放棄更改,則需要放棄您的或基於主人重做。如果可能的話,避免基於待處理的更改工作,始終更喜歡基於合併的工作。

+0

謝謝MarceloÁvilade Oliveira。 還有一個問題,因爲我是git和Gerrit的新手,何時是正確的時間使用櫻桃挑選並從下載選項中提取選項。 –

+0

您可以使用這些選項將其他分支機構所做的更改傳送給您(例如:將分支主機更改爲分支發佈)。櫻桃挑選重做提交併將其合併。 –