Git分支模型

本文介紹一種使用Git進行源代碼管理的分支模型,着重於如何使用Git更好的管理咱們的源代碼。 git

我假定您對Git有必定了解,會使用基本的Git命令進行一些簡單的源代碼管理工做。這不是一篇Git使用教程。 服務器

文章的主要思想源自如下連接: post

http://nvie.com/posts/a-successful-git-branching-model/ ui

根據本身的使用狀況進行了補充。 blog

咱們知道Git是一個不須要中心服務器就能工做的源代碼管理系統;但我仍然建議你至少保持一個邏輯上的中心服務器來存放你的長期分支(後文咱們會說到什麼是「長期分支」,什麼是「臨時分支」)。我說「邏輯上」的中心服務器,意思是你沒必要搭建一個真實的服務器——當你只是在實現一個小型應用時,可能開發人員只有你一我的,這個時候你徹底能夠將長期分支就放在你的項目目錄裏。 教程

首先看一張圖: 進程

這張圖上有這麼幾個分支:master,develop,feather,hotfix,release。它們之間存在着branch和merge的關係。咱們從master和develop開始。 開發

 

image

master和develop分支都是長期分支,它們存在於整個項目存續期內。 get

master分支是整個項目的主分支。 產品

全部其餘分支都直接或間接源自master。master分支是可直接用於產品發佈的代碼。

develop分支反映最新的開發進程。

develop中的代碼老是能夠完整build的。當develop中的代碼進入穩定狀態(修復了絕大多數bug)準備release時,全部develop中的更改將經過release branch最終merge到master。

除master和develop之外的分支都是臨時分支。當這些臨時分支完成其使命,就能夠刪除它們。咱們先看feather分支。

feather分支用於某個新feather的開發,源自develop,並最終merge到develop。

feather分支最終的結局要麼合併到develop branch,要麼被拋棄。feather分支用以下命令建立:

# git checkout –b my feather develop

完成後將這個feather合併到develop:

# git checkout develop

# git merge --no-ff myfeather

# git branch –d myfeather

# git push origin develop

合併時--no-ff選項避免fast forward。使用該選項和不使用該選項獲得的分支路線圖分別以下:

image

release分支用於準備新版本的發佈。源自develop,merge到develop和master。

release分支僅修復小的bug,完成準備版本號,build date等工做。而develop分支能夠同時開始新feather的開發。該分支上修復的bug須要merge到develop,並在該分支完成時merge到master。此時須要給master打上tag,標記這個新的release。

建立release branch:

# git checkout –b release-x.y develop

完成release branch

# git checkout master

# git merge --no-ff release-x.y

# git tag –a x.y

# git checkout develop

# git merge --no-ff release-x.y

# git branch –d release-1.2

Hotfix分支用於緊急bug修復,源自master,merge到develop和master。

對於已發佈的產品,可能有意外的緊急bug須要修復。hotfix branch能夠避免修復bug的工做影響develop branch。

建立hotfix branch:

# git checkout -b hotfix-x.y master

完成hotfix branch:

# git checkout master

# git merge --no-ff hotfix-x.y

# git tag –a x.y.z

# git checkout develop

# git merge --no-ff hotfix-x.y

# git branch –d hotfix-x.y

這裏有個例外就是,若是hotfix發生時有正在進行的release branch,那麼將hotfix merge到release,而release最終會merge到develop和master。

 

到此咱們的分支模型介紹就完畢了。我使用這個branch model有幾個月了,感受是:Great!

相關文章
相關標籤/搜索