引入git flow分支管理

2023-01-27 23:11:15 字數 3895 閱讀 4958

git flow是vincent driessen提出了一個分支管理的策略,非常值得借鑑。它可以使得版本庫的演進保持簡潔,主幹清晰,各個分支各司其職、井井有條。

先看下vincent driessen提出的分支管理模型圖,以便對git flow有個大概的瞭解。

**庫應該有一個、且僅有一個主分支。所有提供給使用者使用的正式版本,都在這個主分支上釋出。這個分支只能從其它分支合併,不能在這個分支上直接修改。需要注意的是,所有在master上的提交應該標記tag。

這個分支是我們是我們的主開發分支,包含所有要釋出到下一個release的**,這個主要合併與其他分支,比如feature分支。該分支應該只是進行一些優化和升級開發,如果有新的需求應該拉出一個feature分支。

這個分支主要是用來開發一個新的功能,一旦開發完成,我們合併回develop分支進入下一個release。

當你需要一個釋出一個新release的時候,我們基於develop分支建立一個release分支,完成release後,我們合併到master和develop分支。

當我們在production發現新的bug時候,我們需要建立一個hotfix, 完成hotfix後,我們合併回master和develop分支,所以hotfix的改動會進入下一個release。

這三種分支都屬於臨時性需要,使用完以後,應該刪除,使得**庫的常設分支始終只有master和develop。

1,建立develop分支

#從master拉出develop分支

#可選,獲取最新版本。git pull origin master

git checkout -b develop master

#釋出develop分支

git push -u origin develop

2,建立feature分支

#從develop拉出feature_v1.0功能分支

#可選,獲取最新版本。git pull origin develop

git checkout -b feature_v1.0 develop

#釋出feature_v1.0分支

git push -u origin feature_v1.0

#在feature_v1.0上開發一些功能

3,完成feature,合併到develop分支

#develop分支獲取最新

git pull origin develop

#切換到develop分支

git checkout develop

#從feature分支合併到develop分支

git merge --no-ff feature_v1.0

#刪除feature分支,也可以不刪除

git branch -d feature_v1.0

4,開始release

#從develop拉出一個release分支

#可選,獲取最新版本。git pull origin develop

git checkout -b release_v1.0 develop

#fix bugs

5,完成release,合併到master分支和develop分支,在master打上tag標記

#合併到master

git checkout master

git merge --no-ff release_v1.0

#在master打tag標記

git tag release1.0 master

git push --tags

#合併到develop

git checkout develop

git merge --no-ff release_v1.0

6,開始hotfix

#從主線master拉出一個hotfix分支

#可選,獲取最新版本。git pull origin master

git checkout -b hotfix_v1.0.1 master

7,完成hotfix,合併到master和develop,並在master上打tag。

#合併hotfix_v1.0.1到master

git checkout master

git merge --no-ff hotfix_v1.0.1

#在master打上tag

git tag hotfix1.0.1 master

git push --tags

#合併hotfix_v1.0.1到develop

git checkout develop

git merge --no-ff hotfix_v1.0.1

2,gitflow for visual studio

feature分支:以"feature_"開頭,如feature_v1.1

release分支:以"release_"開頭,如release_v1.1

hotfix分支:以"hotfix_"開頭,如hotfix_20160112

tag標記:如果是release分支合併,則以"release_"開頭。如果是hotfix分支合併,則以"hotfix_"開頭。

master分支每次提交都要打tag,release tag:如release_v1.1,hotfix tag:如hotfix_20160112

命名都統一採用小寫。

1,一定要按git flow的流程去管理分支,如feature分支開發完要合併到develop,如果要釋出版本到test環境,則從develop拉出一個release分支,release完成後要合併回master和develop分支,修復生產環境問題需要從master拉出一個hotfix分支,hotfix完成後要合併回master和develop分支,並且在master打上tag。

2,一定要按分支命名規範來命名,便於管理和維護。

3,瞭解了git flow工作流程後,可以不使用git flow gui工具,手動操作即可,可以是原生git命令+vs配合操作,比如給master打tag就要用git命令,這在vs裡操作不了的,比如合併分支,雖然也可以使用git命令實現,但在vs裡操作更方便直觀。

4,一定要保持分支的純淨,不要隨便汙染分支。比如,develop分支只包含要釋出到下一個release的**,在沒有拉出release分支前不要合併新的feature分支進來。release分支基於develop分支建立,拉出release分支後,我們可以在這個release分支上測試和修復bug,但是,一旦打了release分支後不要從develop分支合併新的改動過來。develop拉出release分支的同時,也意味著develop分支可以開始下一個release的準備工作了。

5,如果多個版本並行到test環境,怎麼解決這個問題?如下圖。

用git flow 管理版本吧

開啟 git git bash 輸入 git config global user.name your name git config global user.email email example.com mkdir learngit cd learngit pwd users michael l...

4 3 分支管理 分支管理策略

1 新建分支並切換 修改專案工程中的檔案並提交一個新的commit 2 切換回 master 分支並準備合併 dev 分支,使用 no ff 引數,表示禁用 fast forward git merge no ff m merge with no ff dev 合併後使用 git log 檢視分支歷...

分支管理 feature分支

軟體開發中,總有無窮無盡的新的功能要不斷新增進來。新增一個新功能時,你肯定不希望因為一些實驗性質的 把主分支搞亂了,所以,每新增一個新功能,最好新建一個feature分支,在上面開發,完成後,合併,最後,刪除該feature分支。於是準備開發 5分鐘後,開發完畢 切回dev,準備合併 一切順利的話,...