一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

GIT分支管理是一門藝術

  英文原文:http://www.nvie.com/posts/a-successful-git-branching-model/

  原文作者:Vincent Driessen

  本文經Linux大棚博主總結精簡而成。

  1

  GIT,在技術層面上,絕對是一個無中心的分布式版本控制系統,但在管理層面上,我建議你保持一個中心版本庫。

git中心版本庫

  2

  我建議,一個中心版本庫(我們叫它origin)至少包括兩個分支,即“主分支(master)”和“開發分支(develop)”

bigpicture-git-branch-all

  3

  要確保:團隊成員從主分支(master)獲得的都是處于可發布狀態的代碼,而從開發分支(develop)應該總能夠獲得最新開發進展的代碼。

  4

  在一個團隊開發協作中,我建議,要有“輔助分支”的概念。

  5

  “輔助分支”,大體包括如下幾類:“管理功能開發”的分支、“幫助構建可發布代碼”的分支、“可以便捷的修復發布版本關鍵BUG”的分支,等等。

  6

  “輔助分支”的最大特點就是“生命周期十分有限”,完成使命后即可被清除。

  7

  我建議至少還應設置三類“輔助分支”,我們稱之為“Feature branches”,“Release branches”,“Hotfix branches”。

  至此,我們形成了如下這張最重要的組織組,包含了兩個粗體字分支(master/develop)和三個細體字分支(feature/release/hotfixes)。

bigpicture-git-branch-all

  8

  “Feature branches”,起源于develop分支,最終也會歸于develop分支。

  9

  “Feature branches”常用于開發一個獨立的新功能,且其最終的結局必然只有兩個,其一是合并入“develop”分支,其二是被拋棄。最典型的“Fearture branches”一定是存在于團隊開發者那里,而不應該是“中心版本庫”中。

  10

  “Feature branches”起源于“develop”分支,實現方法是:

git checkout -b myfeature develop

  11

  “Feature branches”最終也歸于“develop”分支,實現方式是:

git checkout devleopgit merge --no-ff myfeature(--no-ff,即not fast forward,其作用是:要求git merge即使在fast forward條件下也要產生一個新的merge commit)(此處,要求采用--no-ff的方式進行分支合并,其目的在于,希望保持原有“Feature branches”整個提交鏈的完整性)git branch -d myfeaturegit push origin develop

merge-without-ff

  12

  “Release branch”,起源于develop分支,最終歸于“develop”或“master”分支。這類分支建議命名為“release-*”

  13

  “Relase branch”通常負責“短期的發布前準備工作”、“小bug的修復工作”、“版本號等元信息的準備工作”。與此同時,“develop”分支又可以承接下一個新功能的開發工作了。

  14

  “Release branch”產生新提交的最好時機是“develop”分支已經基本到達預期的狀態,至少希望新功能已經完全從“Feature branches”合并到“develop”分支了。

  15

  創建“Release branches”,方法是:

git checkout -b release-1.2 develop./bump-version.sh 1.2 (這個腳本用于將代碼所有涉及版本信息的地方都統一修改到1.2,另外,需要用戶根據自己的項目去編寫適合的bump-version.sh)git commit -a -m "Bumped version number to 1.2"

  16

  在一段短時間內,在“Release branches”上,我們可以繼續修復bug。在此階段,嚴禁新功能的并入,新功能應該是被合并到“develop”分支的。

  17

  經過若干bug修復后,“Release branches”上的代碼已經達到可發布狀態,此時,需要完成三個動作:第一是將“Release branches”合并到“master”分支,第二是一定要為master上的這個新提交打TAG(記錄里程碑),第三是要將“Release branches”合并回“develop”分支。

git checkout mastergit merge --no-ff release-1.2git tag -a 1.2 (使用-u/-s/-a參數會創建tag對象,而非軟tag)git checkout developgit merge --no-ff release-1.2git branch -d release-1.2

  18

  “Hotfix branches”源于“master”,歸于“develop”或“master”,通常命名為“hotfix-*”

  19

  “Hotfix branches”類似于“Release branch”,但產生此分支總是非預期的關鍵BUG。

  20

  建議設立“Hotfix branches”的原因是:希望避免“develop分支”新功能的開發必須為BUG修復讓路的情況。

hotfix-branches1

  21

  建立“Hotfix branches”,方法是:

git checkout -b hotfix-1.2.1 master./bump-version.sh 1.2.1git commit -a -m "Bumpt version to 1.2.1" (然后可以開始問題修復工作)git commit -m "Fixed severe production problem" (在問題修復后,進行第二次提交)

  22

  BUG修復后,需要將“Hotfix branches”合并回“master”分支,同時也需要合并回“develop”分支,方法是:

git checkout mastergit merge --no-ff hotfix-1.2.1git tag -a 1.2.1git checkout developgit merge --no-ff hotfix-1.2.1git branch -d hotfix-1.2.1

  23

  還記得文章開始時的那張大圖么,我建議你把這幅大圖從這里下載下來,打印出來,貼在你寫字臺的墻壁上,好處不言而喻。

  over~

it知識庫GIT分支管理是一門藝術,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久久久久久久久综合情日本 | 国产精品黑色丝袜的老师 | 亚洲欧美色一区二区三区 | 久久综合九色综合97伊人麻豆 | 国产综合视频在线观看 | 中文字幕久久亚洲一区 | 伊人狠狠 | 一级不卡毛片 | 99久久精品免费看国产一区二区三区 | 久久91精品国产91久久麻豆 | 国产精品猎奇系列在线观看 | 九九视频这里只有精品99 | 久久伊人在 | 美女胸又www又黄网站 | 91大神在线精品网址 | 久热久操| 国内精品久久久久久影院老狼 | 99re6这里只有精品 | 亚洲麻豆视频 | 国产剧情自拍 | 亚洲综合激情另类专区 | 性色aⅴ在线观看swag | 日本xxx在线观看 | 欧美一区二区三区在线视频 | 国产成人综合视频 | baoyu113成人免费视频网页 | 亚洲欧美另类久久久精品能播放的 | 五月激情婷婷丁香 | 婷婷视频网站 | 欧美一区二区三区综合色视频 | 一区二区三区四区在线观看视频 | 日韩 欧美 国产 亚洲 中文 | 精品一区二区三区免费 | 九九99久久精品午夜剧场免费 | 国产在线视频91 | 久久精品中文字幕首页 | 高清一区二区三区 | 国产精品福利午夜在线观看 | 国产精品视频福利一区二区 | 成人爽a毛片在线视频网站 成人丝袜激情一区二区 | 曰本还a大片免费无播放器 曰本视频网络www色 |