Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速的處理從很小到非常大的項目版本管理。
Git Flow是構(gòu)建在Git之上的一個組織軟件開發(fā)活動的模型,是在Git之上構(gòu)建的一項軟件開發(fā)最佳實踐。
Git Flow是一套使用Git進行源代碼管理時的一套行為規(guī)范和簡化部分Git操作的工具。
2010年5月,在一篇名為“一種成功的Git分支模型”的博文中,@nvie介紹了一種在Git之上的軟件開發(fā)模型。
通過利用Git創(chuàng)建和管理分支的能力,為每個分支設(shè)定具有特定的含義名稱,并將軟件生命周期中的各類活動歸并到不同的分支上。
實現(xiàn)了軟件開發(fā)過程不同操作的相互隔離。這種軟件開發(fā)的活動模型被nvie稱為“Git Flow”。
一般而言,軟件開發(fā)模型有常見的瀑布模型、迭代開發(fā)模型、以及最近出現(xiàn)的敏捷開發(fā)模型等不同的模型。每種模型有各自應(yīng)用場景。
Git Flow重點解決的是由于源代碼在開發(fā)過程中的各種沖突導(dǎo)致開發(fā)活動混亂的問題。因此,Git flow可以很好的于各種現(xiàn)有開發(fā)模型相結(jié)合使用。
http://nvie.com Vincent Driessen 文森特.德里森
主要分支
master: 永遠處在production-ready狀態(tài)
develop: 最新的下次發(fā)布開發(fā)狀態(tài)
臨時性分支
feature branches: 開發(fā)新功能都從develop分支出來,完成后merge回develop
release branches: 準(zhǔn)備要release的版本,只修bugs。從develop分支出來,完成后merge回master和develop
hotfix branches: 等不及release版本,必須馬上修master上線bugs的情況。會從master分支出來,完成后merge回master和develop
Git Flow模型全圖
feature
開始一個新功能:
git flow feature start xxxx
提交這個功能到遠程庫:
git flow feature publish xxxx
完成功能,合并到develop:
git flow feature finish xxxx
刪除遠程倉庫里的分支:
git push origin :xxxx
release
git flow release start release-v1.0
git flow release finish release-v1.0
Hotfix
(1) 切到master分支
git checkout master
(2) 更新代碼,保證本地的master代碼是最新的
git pull --rebase
(3) 新建hotfix分支,也就是在這個分支上寫代碼,此分支就是一個本地分支,xxx是分支的名稱,可以用來描述你修復(fù)的bug,例如:fix_account_bugs
git flow hotfix start xxx
(4) 代碼寫好,本地測試沒問題,所有單元測試都通過,這時可以提交修改的文件,強烈建議使用IDE的可視化工具提交代碼,因為你可以看到diff,更直觀!下面命令僅供參考。
git add xxx.java
git commit -m "fix bug"
(5) 步驟4可能會不斷重復(fù),直到最終修改和測試完成后,結(jié)束hotfix以供發(fā)布,此步驟很關(guān)鍵,執(zhí)行下面命令后,會有幾次交互界面,跟vi的操作一樣,需要insert,然后輸入一些備注,來描述你本次修改,然后:wq來保存即可。
git flow hotfix finish xxx
(6) 如果沒有沖突,說明你很幸運,操作完第5步,此時你應(yīng)該在develop分支上,可以通過git branch查看當(dāng)前分支,接下來建議你切到master分支,push代碼到服務(wù)器上,因為hotfix是為了修復(fù)線上bug,線上的代碼是來自 master的,先把問題修復(fù),保證上線,然后回來再看develop上的問題。
git checkout master
(7) 發(fā)布最終的master分支,這時候CI服務(wù)器會自動編譯打包你的代碼,等待打包完畢,重啟UAT的服務(wù),就可以通知測試人員去測試了,如果測試有問題,那請從第一步重復(fù)吧。。。。
git push origin master
(8) 切換到develop,去push代碼
git push origin develop
(9)創(chuàng)建TAG
創(chuàng)建
git tag v1.0
git tag -a v2.0 -m 'v2.0 released'
顯示 git show v1.0
搜索 git tag -l '?2*'
推送
git push origin v1.0
git push origin --tags
git push origin refs/tags/v8.0:refs/tags/v8.0
刪除本地
git tag -d v5.0
刪除遠程
git push origin :refs/tags/6.0
git push origin --delete tag v5.0
拉到本地
git fetch origin tag v8.0
最后推薦大家一款客戶端工具Tower 超級好用 Mac破解版下載地址
http://download.csdn.net/download/yshr1991/9913522