2017-03-05 155 views
3

我正在管理一個git倉庫,並且只能在master分支上擁有寫入權限。我已經要求我的同事創建他自己的分支機構,並對該分支機構進行任何更改,然後我會將其重新分配給主人。現在,這裏是我的情況:Git rebasing分支機構

我的同事檢查出的分支A和做多次提交。我繼續在master分支上工作。同事將更改推送到存儲庫,然後將它們重新綁定到主服務器上。我一直在主分支上工作,而我的同事一直致力於A.

現在,我的問題是同事是否需要刪除一個底墊後,並創建一個新的分支或他能保持在一個工作?在繼續工作之前,他是否需要將新主人與A合併?

A 
| \ 
| \ 
B D 
| | 
C E 
| /| 
H/F 
| | 
I G 

編輯迴應蒂姆的答案格式:

這不是我的方案雖然。 branchA從來沒有整合來自master的變更。所以基本上:

master:  ... A -- B 
branchA: ... A -- C 

然後:

master:  ... A -- B -- C' 
branchA  ... A -- C 

注意branchA保持不變。現在可以繼續使用branchA嗎?

+0

您似乎很困惑重新綁定和合並。在您更新的圖表中,_no_ rebasing已經發生。你應該從你的問題中罷免_rebase_,或者告訴我們你在這裏做了些什麼。 –

+0

你怎麼沒有發現重新發生?我已經將'branchA'提交到'master',創建'C''? –

+0

這不是一個rebase,它可能是一個合併或櫻桃選擇。通常情況下,你不會在'branchA'上綁定'master',這很奇怪。您將在'master'上重新綁定'branchA',然後使用'branchA'快速轉發'master'。我的回答做了一個體面的工作來解釋這一點。 –

回答

1

您的同事應該能夠繼續使用同一分支在您快速轉發master後,從branchA更改。這樣做的原因是,之後立即您的同事完成的branchAmaster和快進master與自己提交一個底墊中,這兩個分支應該是相同在那個時間點。請注意,這是通過合併同步後發生的情況的相反情況,在這種情況下,您很可能希望刪除功能分支並用新分支再次分支。

考慮以下簡單的工作流程,它採用墊底:

master: ... A 
branchA: ... A 

兩個masterbranchA每得到一個承諾:

master: ... A -- B 
branchA: ... A -- C 

現在branchA底墊上master

master: ... A -- B 
branchA: ... A -- B -- C' 

請注意,我有實驗室elled的branchA獨特提交以上撇號,因爲它是一個新的提交,然而這可能會類似於原提交C。現在

,我們快進masterbranchA的變化。我們能做到這一點,因爲重訂branchA提前master。這給我們留下了:

master: ... A -- B -- C' 
branchA: ... A -- B -- C' 

而在這個確切的時刻,無論是featureAmaster是相互鎖步。我們可以沖洗並重復,因爲我們現在基本上回到了我們開始的地方。

+0

雖然這不是我的場景。 branchA從來沒有整合來自master的變更。所以基本上: 主:...一個 - B branchA:... A - ç 然後: 主:... A - B - C」 branchA ...一個 - C 注意'branchA'保持不變。繼續使用'branchA'現在安全嗎? –

0

從技術上講,由於他的分支不變,他可以繼續在分支上工作。這就是說,既然你在做主,那麼你的代碼庫就會發生分歧,在重新組裝時可能會引發越來越多的衝突。如果你決定開始把主人的改變帶入他的分支,我建議取消他的分支並製作一個新的分支,而不是將主人合併或重新裝訂到他的分支上。

我個人的意見是,你應該將他的分支合併到你的分支中,而不是重新分配。這樣,你可以來回合併,始終保持最新狀態。但我認識到合併VS rebase的部分原因在於品味。