我有一個關於git分支協議的問題。我開始更熟悉git命令,但對於這個過程還是比較新的。git流分支依賴關係
我正在與另外一個人基於Git的項目。我們添加了一個大功能,因此我們將工作分解爲「Branch_1」。另一位開發人員開始在Branch_1的一個叫做Branch_2的分支中添加一些添加項。另一個開發人員在Branch_2上做了一些工作,然後暫時執行其他任務。我需要繼續並擴展他在Branch_2中所做的更改,因此我基於Branch_2創建了Branch_3。
圖1
Branch_1
|_______> Branch_2 (other developer working on)
|________> Branch_3 (I'm working on)
雖然我工作Branch_3,我認識到,需要在所有分支的部分bug修復,我需要修復才能繼續發展Branch_3。 (另外,如果Branch_3工作被放棄,則無論如何FIX都需要位於所有其他分支中)。
所以我的想法是檢出Branch_1,使爲FIX,結賬Branch_2的變化,在Branch_1合併,然後結帳Branch_3並從Branch_2的修改合併。見下面的圖2。
圖2
git checkout Branch_1
# make my changes
git pull origin Branch_1 # to pull in any other changes
git push origin Branch_1
git checkout Branch_2
git pull origin Branch_2 # to pull in any other changes
git merge --no-ff Branch_1 # merge in branch 1
git push origin Branch_2 # push to the remote repository
git checkout Branch_3
git pull origin Branch_3 # to pull in any other changes
git merge --no-ff Branch_2 # merge in branch 2
git push origin Brach_3 # push to the remote repository
不過,我想知道幾件事情在這種情況下:
- 有很多的步驟做。在一段時間後消耗時間。如果我根據Branch_3創建Branch_4並從Branch_4創建Branch_5,則涉及更多步驟。
- 爲了着手製作FIX後Branch_3工作,我基本上已經做出提交到我同事的Branch_2他可能沒有意識到。
- 對於更復雜的設置,我可能無法改變從什麼分支的東西。我可以將我的bug修復爲Branch_1,並將其合併到我的同事Branch_2中,但也許我的同事通過分支Branch_1a等中間分支創建了Branch_2。 FIX不會以正確的順序正確合併到Branch_1a中。
我主要wondeirng別人怎麼會接近類似的情況。這是一個正確的思維模式,需要在分支層次結構中進行變更嗎?
另請參閱http://stackoverflow.com/questions/6596030/whats-your-ideal-branch-architecture-within-git-for-web-applications及其答案 – 2012-01-27 08:27:03