1. 程式人生 > ># git團隊開發流程小結

# git團隊開發流程小結

git開發流程總敘述

這次在公司開發專案,學到了很多東西,對很多東西都顛覆了之前的理解寫這篇部落格,來說下自己對git的在產品開發流程中的理解。(注:本篇部落格是講解git進階的,如果沒有用過git的人,請先看git教程)

現在我們首先給出在正式的產品釋出中,標準的git的開發流程圖:
這裡寫圖片描述

我們對上述圖形做個總體的說明:

  1. master分支:顧名思義,主分支,是最重要的分支,這個分支記錄的程式碼都是成熟的,穩定的產品程式碼,當在beta版本的專案或是開發版本的專案得到了充分的驗證之後,我才能將分支併入master分支。master分支永遠是production-ready的狀態,即穩定可產品化釋出的狀態。

  2. develop branches(dev分支):這個分支每個開發者做開發的分支,也就是我們進行功能點開發的分支,dev分支的迭代次數很多,記錄了我們開發功能點,修復BUG,重構等一系列版本迭代的變化。當每次Feature branches完善後,我們可以申請merge request,然後通過leader或者測試的review,同dev進行合併。

  3. Feature branches:這個分支就是我們每次做功能點開發,fixbug,refactor所需要提交的分支,feature branches記錄了我們在具體開發過程中的對專案程式碼的變化,當我們在features branches完成了任務後,則可以申請merge request,將自己的分支合併到dev分支

  4. release branches: 同樣,這也是有多個分支組成的一個分支系列。這個分支系列從develop分支出來,也就是預發分支。在預髮狀態下,我們往往會在這個分支上進行打包,測試,然後由測試工程師通知開發工程師,測試之後出現的BUG,然後進行一系列的BUG修復;不斷反覆進行上述操作之後,BUG基本被消除,然後我們可以釋出一個穩定的版本號。

  5. Hotfix branches:這個分支系列也就是我們常說的緊急線上修復,當線上出現bug且特別緊急的時候,就可以從master拉出分支到這裡進行修復,修復完成後分別併入master和develop分支

平時常用的git專案開發流程

在平時開發過程中,我們一般都是用到的dev分支和Feature分支,一般的開發流程如下:


簡述下上述的圖:
這裡寫圖片描述
1. 我們在本地都會有一個dev分支,當我們要進行一個功能點(這裡假設為功能點1)的開發的時候,我們不要在本地dev分支上做修改,而是在本地新建一個分支(feature1),然後切換到這個分支上去,在新建的這個分支中進行功能點的開發
2. 當我們在feature1分支開發完成後,覺得功能點已經做得差不多了,我們再將這個feature1分支推到遠端伺服器上(注:在推之前,要儲存先合併伺服器最新的dev分支,避免引起衝突不能合併)。
3. 然後我們在伺服器上,發起mergerequest的請求給review程式碼的人,將新開發的程式碼,交由他們來進行review
4. 如果程式碼沒有通過review,則我們需要在本地的分支上,按照review者的意見進行修改,然後在推上伺服器,直到程式碼通過review
5. 程式碼通過review後,我們寫的程式碼就會自動地在伺服器上進行合併,然後我們的程式碼,就會順利地進入伺服器dev分支了
6. 我們回到本地分支,因為feature1已經成功通過review了,這樣的話,我們可以把本地的dev分支進同feature1分支實行合併,然後刪除feature1分支了
7. 至此,我們已經按照git規範流程完成了功能點1的開發。

從以上git的流程來看,我們能明白以下這幾點很重要:

  1. 本地的dev分支一定要保持純淨,時刻同伺服器dev分支一樣,這樣方便我們回滾,查詢資訊
  2. 開發的新的功能點分支,推上伺服器之後,也不要直接推到dev分支,而是推送到伺服器的另一個分支,這樣可以讓同事進行review,對程式碼進行修改
  3. 開發分支的程式碼粒度要掌握合適,每次讓同事進行review的時候,也方便指出程式碼的中的問題。
  4. 每次將功能點推上伺服器之前,一定要在本地合併伺服器上的最新的dev分支,並且解決衝突,這樣方便伺服器上面的自動合併。
  5. commit的資訊一定要規範:最好是功能點名稱+在這個功能點上開發任務的情況

一些git平時常用到的問題

git配置代理

在某些時候,我們的可能因為各種各樣的原因,連線不上git伺服器,這時候,我們需要對git配置代理,配置git代理的方法可以參照這篇連線:git使用socks代理原理和瀏覽器翻牆是一樣的,只需要手動修改git的local.config命令就行,如果不要,再使用

git config --local --unset http.proxy 
git config --local --unset https.proxy

以上兩條命令就好可以刪除代理了

git commit 命令壓縮:

很多時候,我們在feature分支上進行開發的時候,有可能多個commit的資訊的顯得比較冗雜,也許我們主要其中一個版本號代表的commit資訊就好了,這時候,我們可以壓縮commit資訊:git rebase 壓縮commit 資訊這篇連結中有教程

git 錯誤會滾了怎麼辦?

平時總會進行git的回滾,這個大家都知道,可是,如果回滾錯了怎麼辦?一不小心就把辛辛苦苦寫的程式碼都刪了,沒事,git這麼強的工具,肯定有辦法的,我們使用

git reflog

這條命令,來檢視我們的專案最完整的git commit記錄,然後找到我們的想要回滾到正確的版本號,就可以了。具體教程可以檢視這篇連結git 找回已刪除的commit記錄