git版本控制開發流程小結筆記(二)

接前篇git版本控制開發流程小結筆記(一),咱們接着展現其餘的開發流程。git

4. 預發

那麼接下來,完成了幾個功能點的開發以後,develop分支已經達到了一個能夠發佈的狀態,顯然按照傳統的流程咱們首先要通過一個預發的流程。那咱們,咱們將最新的develop分支拉出來成爲一個release分支,暫且取名爲release1。shell

$ git checkout -b release1
Switched to a new branch 'release1'
$ echo "some release configurations" >> release.config
$ ls
1.txt  2.txt  release.config

爲了展現須要,這裏寫了一個release.config文件,咱們假設它就是預發時候的一些環境配置,而後commit掉。網絡

$ git add -A
$ git commit -m 'release1'
[release1 c005f04] release1
 1 file changed, 1 insertion(+)
 create mode 100644 release.config

考慮最一般的狀況,預發的時候可能遇到一些預發環境下的bug,這個時候我就直接在release分支下進行修復演進,若是bug問題很大,則須要從新併入develop中,拉出新的feature進行開發重構。下面演示直接在release分支下進行bug fixs。假設是1.txt出現了問題,咱們將feature1字符串修改成feature1+。svn

$ echo "feature1+" > 1.txt
$ git add -A
$ git commit -m 'release1 bug fix'
[release1 661497f] release1 bug fix
 1 file changed, 1 insertion(+), 1 deletion(-)

好了,預發環境終於一切正常了,下面就是激動人心的線上發佈。這裏咱們須要將release分支同時併入master分支和develop分支,master分支供線上發佈,develop分支供下次開發演進。測試

$ git checkout master
Switched to branch 'master'
$ git merge release1
Updating 26a17c8..661497f
Fast-forward
 1.txt          | 1 +
 2.txt          | 2 ++
 release.config | 1 +
 3 files changed, 4 insertions(+)
 create mode 100644 release.config

 $ git checkout develop
Switched to branch 'develop'
$ git merge release1
Updating f5cb288..661497f
Fast-forward
 1.txt          | 2 +-
 release.config | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 release.config

好了,一切大功告成。讓咱們來看一下分支節點網絡圖。spa

由圖可見,develop,master,release1三個分支的head已經指向同一個節點,work tree已經保持一致。.net


5. 線上bug熱修復

咱們常常會碰到一些線上意想不到的bug,須要緊急修復。這時,咱們就直接從master分支拉出hotfixes分支進行修復,這裏咱們假設線上出現了bug的問題在於1.txt的feature1+字符串的+號,咱們須要刪除掉+號,咱們拉出hotfix1分支進行修改。版本控制

$ git checkout master
Switched to branch 'master'
$ git checkout -b hotfix1
Switched to a new branch 'hotfix1'
$ echo "feature1" > 1.txt
$ git add -A
$ git commit -m 'hotfix1'
[hotfix1 17692cc] hotfix1
 1 file changed, 1 insertion(+), 1 deletion(-)

bug修復完畢,測試經過後咱們將分支合併到master和develop中去。code

$ git checkout develop
Switched to branch 'develop'
$ git merge hotfix1
Updating 661497f..17692cc
Fast-forward
 1.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

 $ git checkout master
Switched to branch 'master'
$ git merge hotfix1
Updating 661497f..17692cc
Fast-forward
 1.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


注意這裏可能出現的狀況就是,因爲develop分支仍在開發,因此可能出現hotfix分支合併到develop分支發生衝突的狀況,這個時候我就須要處理一下衝突啦。好了,完成這些步驟以後,咱們就順利地修復完了線上bug,一切迴歸正常。讓咱們來看一下分支節點網絡圖。blog

總結

總得而言,博主認爲git的開發流程仍是很是清晰簡單的,因爲git方便的branch機制,咱們能夠不像之前使用svn那樣單純的整個項目copy的方法去拉分支進行開發,同時清晰的節點網絡圖也更加有利於項目的迭代。所以不再會svn混亂了目錄結構和開發流程而讓項目的熵值愈來愈大了!!

相關文章
相關標籤/搜索