我有一個項目,我管理一個git倉庫。我們使用progit分支策略(如接受的答案中所述,這裏是Git branch strategy for small dev team),其中一個分支是生產分支,另一個分支是開發/測試分支。我們使用結構部署代碼。在git中,dev和production分支之間的區別在哪裏?
當我們準備用git製作新的產品發佈版時,我們將開發/測試分支合併到生產分支中,然後使用結構部署生產分支。問題在於開發和生產之間存在代碼差異 - 一些徽標發生變化,一些不同的數據庫主機/憑證等等。我一直在保存一個包含差異的.patch文件,並在構建生產環境時使用這個補丁來構建補丁程序,但這種方式並不能很好地工作。特別是,如果修補程序周圍的一些代碼發生了變化,則完全失敗 - 修補程序無法應用,並且我的部署中止。
我一直在想,如果我不應該直接將所有更改應用到生產分支?這有什麼缺點?
我關心的一個特殊用例是,如果我們需要做一個修補程序。我們目前通過從生產環境中分支,進行更改,然後將該分支合併到開發和生產中來實現這一點。如果生產分支與開發分支不同,那麼當修補程序合併到開發中時,這些更改是否會被拉入開發分支?
沒問題,所以,這是行不通的:當我從生產環節開始'git merge development'的時候,開發分支的差異會覆蓋生產分支中的僅生產更改。我需要保留不會離開生產分支的變更 - 他們既不進入任何其他分支,也不被其他分支覆蓋。 –
@IgorSerebryany:如果您將開發中的變更改爲與您在生產中保留的完全相同的行,那麼是的,您將遇到問題。每當你做出這樣的改變時,你都必須進行虛擬合併,以基本上「堅如磐石」製作部門應該如何看待這些線條。 –
我做了以下精緻的芭蕾舞:(1)確保兩個分支同步; (2)我將我的更改應用到生產分支(3)'git merge -s our production' from development branch; (4)git合併 - 來自生產分支的我們的開發。因此,我認爲我已經達到了我想要的狀態,在那裏我的變化沒有被破壞,也沒有被轉移出生產。 –