記一次merge request+git rebase的工作模式


大部分前端的工作模式

  • 協同開發,大家都git clone 遠程倉庫到本地
  • 從master上切自己的本地分支進行開發
  • 若遇到線上緊急bug需要修復,從master上切一個bug-fixed分支 修復bug后 把此分支merge到master 緊急發布生產
  • 然后把bug-fixed的merge到dev分支上 以保持dev和master的同步
  • 測試階段,將自己的本地分支merge到dev分支
  • 測試完畢,上線階段的時候再把自己的本地分支merge到master分支發生產
之前所在的公司幾乎都是上述這種工作模式,其優點就是傻瓜式操作,簡單易上手
其弊端就是大部分人commit之前不喜歡pull下最新代碼 導致會有merge commit,經常也會遇到沖突,然后git樹不是線性的 

現公司要求的工作模式:

以sourcetree舉例

  • 協同開發,大家都git clone 遠程倉庫到本地
  • 從master上切feature分支作為本期需求的開發分支
  • 所有開發人員從feature分支上切自己的本地分支進行開發 以姓名-模塊的形式命名分支
  • 每天推送代碼之前,先切到feature分支上 git pull最新的代碼 並且是用變基代替合並 保證自己本地的feature是最新的代碼
  • 切回到自己的開發分支,然后右擊feature分支 選擇將當前變更變基到feature分支上 有沖突則解決沖突
  • 將自己的分支推送到遠程
  • 在gitlab上發起merge request 將自己的分支合並到feature分支上並且指定review的人員 Review通過后由其merge
  • 如果線上有緊急bug修復,從master上切bug-fixed分支 修復bug后發起merge request至master 並設定相關Review人,Review通過后,將對應commit cherry-pick至Master分支

git命令行的話則是如下操作

  • 克隆遠程倉庫到本地: git clone 遠程倉庫地址
  • 此時本地默認只有master分支 需要切換到遠程的featureA分支: git checkout -b featureA origin/featureA
  • 從featureA上切自己的分支開發: git checkout -b 姓名_模塊
  • 提交代碼:git add. + git commit -m '描述' 兩連
  • 在自己的開發分支git fetch 獲取遠端所有更新
  • git rebase origin/featureA 本地開發分支上所有的變更變基最新的featureA上
  • git push -f origin 姓名_模塊
  • 在gitlab上創建merge request

總結

現公司的工作模式有以下幾點是我之前沒有遇到過的 更加的規范,有利於多人協同開發的工作模式 繼續加油~~

git rebase

變基rebase這個操作說白了就是,重新選定當前提交的根節點
這個操作會把整個本地分支移動到feature分支的后面,有效地把所有feature分支上新的提交並入過來 就能保證git樹的線性了

merge request

以前我們習慣於自己在本地進行將開發分支和功能分支進行合並 有沖突解決沖突 然后推送到遠端
merge request的作用其實就是多了一層review 由指定的人員review之后再merge

cherry-pick

復制一個特定的提交到當前分支 避免重復勞動 也不用合分支
git cherry-pick 4c805e2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM