首頁 > 軟體

GitHub Flow & Git Flow 基於Git 的兩種共同作業開發模式

2020-06-16 17:33:13

介紹基於Git 兩種共同作業開發模式

對於Github 一些好用的特殊操作技巧 ,可以見GitHub 特殊操作技巧 和Git的基本操作  http://www.linuxidc.com/Linux/2016-09/135184.htm

GitHub Flow

GitHub Flow —— 以部署為中心的開發模式,通過簡單的功能和規則,持續高速 安全地進行部署。在實際開發中往往一天之內會實施幾十次部署,而支撐這一切的,就是足夠簡單的開發流程以及完全的自動化。

  1. 令master 分支時常保持可以部署的狀態
  2. 進行新的作業時要從master 分支建立新的分支,新分支名稱要具有描述性
  3. 2新建的本地倉庫分支中進行提交
  4. 在Github 端倉庫建立同名分支,定期push
  5. 需要幫助、反饋,或者branch已經準備merging時,建立Pull Request,以Pull Request 進行交流
  6. 讓其他開發者進行審查,確認作業完成後與master分支進行合併(合併的程式碼一定要測試
  7. 與master分支合併後,立刻部署

使用Github Flow 的前提條件

  • 團隊規模最好控制在15-20人之內,具體見 how-github-works
  • 部署作業完全自動化。必須自動化,一天之類需要多次部署
    • 使用部署工具(Capistrano,Mina,Fabric,Webistrano,Strano等),讓部署時所需的一系列流程自動化。
    • 通過Web介面進行部署,Capistrano 等部署工具需要命令執行操作,開發者以外的人很難實施部署
    • 匯入開發時注意事項:隨著團隊人數的增多及成熟度的提高,開發速度會越來越快。往往一個部署尚未完成,另一名開發者就已經處理完下一個pull request,開始實施下一個部署。在這種情況下,一旦正式環境出現問題,很難分辨哪個部署造成了影響。為了應對該情況,建議在部署實施過程中通過工具加鎖。
    • Git Hook 自動部署
  • 重視測試
    • 讓測試自動化
    • 編寫測試程式碼,通過全部測試
    • 維護測試程式碼

Git Flow

荷蘭程式設計師 Vincent Driessen 曾發表了一篇部落格,讓一個分支策略廣為人知。具體流程見下圖(參照該部落格的一幅圖片)

這一流程最大的亮點是考慮了緊急Bug的應對措施,整個流程顯得過於複雜,所以在實施該方案前,需要對整個開發流程進行系統的學習。也需要借助Git flow 等工具的輔助。

GitHub 教學系列文章: 

通過GitHub建立個人技術部落格圖文詳解  http://www.linuxidc.com/Linux/2015-02/114121.htm

GitHub 使用教學圖文詳解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

使用 GitHub / GitLab 的 Webhooks 進行網站自動化部署  http://www.linuxidc.com/Linux/2016-06/131993.htm

多個GitHub帳號的SSH key切換 http://www.linuxidc.com/Linux/2016-05/131080.htm

如何在同一台電腦上使用兩個GitHub賬戶 http://www.linuxidc.com/Linux/2016-05/131079.htm

利用GitHub搭建個人Maven倉庫  http://www.linuxidc.com/Linux/2016-04/130197.htm

一分鐘認識GitHub http://www.linuxidc.com/Linux/2015-11/125089.htm

分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm 

下面根據上圖,按塊說明:

master 分支和 develop分支

在Git Flow 中,這兩個分支至關重要,它們會貫徹整個流程始終,絕對不會被刪除。

master 分支

master 分支時常保持著軟體可以正常執行的狀態。由於要維護這一狀態,所以不允許開發者直接對master 分支的程式碼進行修改和提交。

其他分支的開發工作進展到可以發布的程度後,將會與master分支進行合併,並且這一合併只在發布成品時進行。發布時將會附加版本編號的Git標籤。

develop分支

develop分支是開發過程中程式碼中心分支。與master 分支一樣,這個分支也不允許開發者直接進行修改和提交。

程式設計師要以develop分支為起點新建feature 分支,在feature 分支中進行新功能的開發或者程式碼的修正。也就是說develop分支維繫著開發過程中的最新程式碼,以便程式設計師建立feature分支進行自己的工作。

在feature 中工作

feature 分支以develop分支為起點,是開發者直接更改程式碼傳送提交的分支。開發流程:

  1. 從develop分支建立feature分支
  2. 從feature分支中實現目標功能
  3. 通過Github 向develop傳送pull request
  4. 接受其他開發者稽核後,將Pull Request合併至develop分支

具體指令:

$ git checkout develop
$ git pull
$ git flow feature start add-user //add branch feature/add-user
$ git branch
// feature/add user  start commit commit ....
$ git push orgin feature/add-user
//到github 上去程式碼審查,切到develop分支,進行pull request 
$ git checkout develop
$ git pull // 當feature/add-user 合併到 develop後,本地develop 需要更新到最新狀態

注意,預設狀態是pull request 到master。這時需要手動切換到develop分支,再進行pull Request 操作。
如果採用該開發策略,那麼可以在setting 中 Option 中,修改Default Branch 為 develop ,這樣就省去了手動修改的麻煩。

與develop分支合併後,已經完成工作的feature分支可以在適當的時機刪除

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2016-09/135185p2.htm


IT145.com E-mail:sddin#qq.com