1. 程式人生 > 實用技巧 >git flow入門使用

git flow入門使用

>>> hot3.png

原文地址: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了。

轉載於:https://my.oschina.net/dongwq/blog/191061