[git] HOWTO work with git flow

Git Flow印象

原文地址:http://www.jiangyouxin.net/2013/02/11/git_flow.html

在github的項目主頁上是這麼介紹的:(git flow is) Git extensions to provide high-level repository operations for Vincent Driessen's branching model. 這個Vincent Driessen's branching model的原文在http://nvie.com/posts/a-successful-git-branching-model/

簡單翻譯一下。git flow是用來實現某種分支模型上的操作的

兩個主(main)分支:
master:指向當前已發佈版本
develop:指向當前開發狀態

三類支持(support)分支:
feature分支:從develop創建,用於某個功能點的開發。完成時自動合併到develop。
release分支:從develop創建,用於某個版本發佈前的提測和修改BUG。完成時自動打TAG,合併到master和develop。
hotfix分支:從master創建,用於已發佈版本的快速BUG FIX,完成時自動打TAG,合併到master和develop(若當前存在release分支,則合併到該分支而不是develop)

“創建”和“完成”操作都由對應的git flow命令來實現。命令很容易記憶:
git flow <feature|release|hotfix> <start|finish> <name>

下面這張圖是從原文COPY出來的:

使用git flow,每一個feature獨立在支線開發,完成後再合併到主線;發佈版本在支線完成,與功能開發可以並行;打TAG的同時Merge修改回主線。以上這些都深得我心,而且它是靠工具(而不是規章制度)來實現的,對程序員比較友好。

git flow把所有的發佈版本串聯在master分支上,很好地維護了它們之間的偏序關係(master分支上的每一次提交都對應一個發佈版本),這樣可以很方便將master作爲“賣主分支”來管理OEM;與topgit等結合也會很方便。

git flow的hotfix分支只能基於master,也就是最新的發佈版本。如果要基於更老一些的發佈版本去擦屁股,就得手工操作了:從舊的TAG上創建branch,完事後打新TAG,然後合併回develop(或者當前release),注意這時候就不能合併到master了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章