2016-04-06 67 views
2

我們最近從svn遷移到git。我們目前有一個發佈分支和一個主分支。我們在發佈當天將版本合併到主版本並對其進行標記。補丁發佈後將版本合併到主版本git

現在,如果我們要做一個補丁發佈。這是創建一個關閉主分支作爲修補程序分支,並將其合併到主,然後創建一個新的標籤,並從那裏釋放。然後,我們還將該修補程序合併到發行版中,以便在QA進行測試時,發行版具有生產中的所有更改。

然後,當我們必須將發佈分支合併回主服務器時,問題就出現了。

1)我們不能做一個快進的釋放作爲主已發散

2)如果我們做一個正常的合併,甚至將是安全的(這也將增加一個合併提交)將這些代碼是有時候會發生什麼,我們不確定會發生什麼

3)我們可以重新發布master的版本,但這是一個常見的公共分支(會讓開發者本地分支變得糟糕?)並且rebasing發佈也會很危險? 如果我們不理想的底墊,我們不會對主分支幹淨的歷史與標記點的所有版本無論是

你怎麼做一個版本,通常處理這個

+0

「我們在發佈當天將版本合併到主版本中」讀起來就好像你做了'git checkout master;混帳版本'似乎倒退。 – Schwern

+0

將'release'合併到'master'中。 'master'已經'發散'了,但是它在'release'中也是一樣的提交,所以不應該有衝突。您所描述的內容與[git flow](http://nvie.com/posts/a-successful-git-branching-model/)策略類似,這是非常常用的策略。當使用git flow時,有一個'development'分支(類似於'release'分支)。從'master'分支的修補程序與'master'和'development'合併。 'development'稍後可以再次合併到'master'中(在git流的情況下通過'release'分支)。 – Peter

回答

1

Then we also merge that hotfix back into release

We can't do a fast forward release as the master has diverged

一種到方式改善工作流,避免發散的情況是添加更多的合併,只是hotfix合併後:

git checkout relase 
git merge -s ours master 

這樣一來,您錄製releasemaster被「合併」。

這將允許您稍後進行從releasemaster的快進合併。

+0

在我添加任何進一步的評論之前,您能否詳細介紹一下「--ours」?我還檢查了合併的git文檔,似乎有兩個「我們」列出。 – MilindaD

+0

@MilindaD我們的合併策略能夠在不改變目的地分支上的*任何*的情況下記錄合併。這將允許你創建一個共同的祖先,這將使未來的快速合併成爲可能。 – VonC

+0

所以我們把hotfix和master和release合併,然後做一個「我們的」合併來表示我們合併了這個。正確?此外,由於我們將修補程序合併回發佈,即使稍後我們執行「我們的」合併時發生衝突,我們仍然可以執行快速合併。正確?也只是爲了澄清這是你在你的工作場所(和其他組織)做什麼? – MilindaD

相關問題