Git分支模型

2021-09-06 06:57:48 字數 2551 閱讀 7475

本文介紹一種使用git進行源**管理的分支模型,著重於如何使用git更好的管理我們的源**。

我假定您對git有一定了解,會使用基本的git命令進行一些簡單的源**管理工作。這不是一篇git使用教程。

根據自己的使用情況進行了補充。

我們知道git是乙個不需要中心伺服器就能工作的源**管理系統;但我仍然建議你至少保持乙個邏輯上的中心伺服器來存放你的長期分支(後文我們會說到什麼是「長期分支」,什麼是「臨時分支」)。我說「邏輯上」的中心伺服器,意思是你不必搭建乙個真實的伺服器——當你只是在實現乙個小型應用時,可能開發人員只有你乙個人,這個時候你完全可以將長期分支就放在你的專案目錄裡。

首先看一張圖:

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

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

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。使用該選項和不使用該選項得到的分支路線圖分別如下:

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!

Git分支模型(GitFlow)

merge no ff 使用 no ff合併時,在刪除develop分支之後,該分支的合併資訊仍然被保留,在以後的 分析中可以便捷的檢視到歷史資訊,而fast forward方式則無法辨識 的合併資訊 master分支的head節點始終處於 準備好進行生產的狀態 即master分支的head節點所指...

git檔案管理模型和git分支 branch

git使用起來非常方便,也極其複雜,對於半入門的新手,理解git對檔案管理的模型往往有助於加深對git的理解。1 git檔案管理模型 假設在工作目錄中有三個檔案,準備將它們暫存後提交。暫存操作會對每乙個檔案計算校驗和 即sha 1 雜湊字串 然後把當前版本的檔案快照儲存到git倉庫中 git使用bl...

Git分支模型和開發規範詳解

1.分支管理 1.1 總覽 從上圖可以看到主要包含下面幾個分支 master 主分支,主要用來版本發布。develop 日常開發分支,該分支正常儲存了開發的最新 feature 從develop分支fork,合併回develop。具體的功能開發分支。release 從develop分支fork,合併...