# 功能分支工作流(配合GitLab看板) for 網頁組 ###### tags: `網頁組` 參考網址: https://wiki.jikexueyuan.com/project/git-workflow-tutorial/function-workflow.html https://git.ninghao.net/feature-branch-workflow.html https://iter01.com/37690.html ## 功能分支工作流基本說明 :::info 功能分支工作流是以集中式工作流為基礎,差別在將新功能及BUG分配一個專用的分支來進行開發,在功能分支合併至master分支之前,配合Pull Requests的方式進行code Review或是與其他協作開發者進行討論,確認沒問題後,在合併至master分支。 ::: ## 看板流程基本說明(可依專案狀況進行調整) ### 1. Backlog 建議、有想法 ### 2. To Do(Planning) 大概敘述功能、問題 ### 3. Doing 撰寫開發、修改詳細 開啟分支->進行開發->commit ### 4. Testing 測試階段(協作同仁可藉由下載此分支來進行測試) ### 5. Review(Ready for TestArea) 提出Pull Request->組長CodeReview ## 推行目的 :::warning - 讓團隊成員熟悉git上的基本分支操作 - 確保master分支正確性 - 方便專案協作 - 配合Rull Request實踐Code Review - 結合GitLab看板可以讓組長掌握專案進度及問題 ::: ## GitLab操作範例 ### 前置作業 #### 建置GitLab看板 1. 進入GitLab專案後,點選左方選單 **議題->看板** ![](https://i.imgur.com/dyYsTL3.png) 2. GitLab看板預設為下圖,點選中間 **ADD default lists** ![](https://i.imgur.com/63ZtYcK.png) 點選完,會新增兩個流程(To Do Doing) ![](https://i.imgur.com/ewdrRl4.png) 3. 加入其他標籤,點選看板頁面右上方 **Add list->建立專案標籤** ![](https://i.imgur.com/GnZbtqq.png) 4. 輸入標籤名稱,並點選顏色。 ![](https://i.imgur.com/CUVtdA8.png) 確認後,點選左下方建立。 ![](https://i.imgur.com/vTDNBxn.png) 5. 完成建立新標籤 ![](https://i.imgur.com/DtkAXrr.png) 6. 重複上面3~5動作,建置完專案看板流程。 --- ### 情境一(專案功能增修) 1. 進入GitLab專案後,點選左方選單 **議題** ![](https://i.imgur.com/oTPb29E.png) 2. 點選左方新增議題 ![](https://i.imgur.com/wlplbr1.png) 3. 填寫議題資訊,填寫完後點選送出。 ![](https://i.imgur.com/riX5ylE.png) Title(必填):BUG標題。 Description(選填):BUG描述。 Assignee(選填):指派人員,此BUG要分派給誰處理。 Mileston(選填):里程碑,此BUG屬於哪個里程碑。 Labels(選填):選擇看板list,預設為Backlog。 4. 議題送出後,將立即顯示在看板上(未選擇list,則預設放在**backlog**) ![](https://i.imgur.com/CTCsGcS.png) 5. 確認無誤後即可將議題卡片移至**To Do**,並點選議題標題進入此議題 ![](https://i.imgur.com/ztJ4ana.png) 填寫規劃處理的方式或是參考資料,填寫完後點選commit ![](https://i.imgur.com/l7kAiPG.png) 6. 規劃完如何處理議題後, 即可將議題移至**Doing** ![](https://i.imgur.com/eRmDql5.png) 在此流程我們需要創建一個新的功能分支來處理此議題 開設方式為進入議題,點選左方綠色按鈕倒三角形,勾選建立分支並點擊下方建立分支 ![](https://i.imgur.com/SuAYu6r.png) 建立完分支後,點選專案左方選單 **檔案庫->分支**,即可看到新的分支 ![](https://i.imgur.com/LB14MBr.png) **功能增修都在此分支進行修改。** :::warning 開完分支後,將要把分支pull至本機端或是開發機端進行開發 開發完後再pull至gitlab 此詳細操作流程在備註中說明 ::: 7. 增修完功能分支後,將議題移置**Testing** 進入測試階段。 PS:在此流程組員可以下載此功能分支來進行測試。 ![](https://i.imgur.com/MkU92VD.png) 8. 測試完沒問題後,即可將議題移置**Review(Ready for TestArea)** 當議題到此流程就代表功能增修以完成,可以建立合併請求。 點選專案左方選單 **檔案庫->分支**,在功能分支的右方點選合併請求 ![](https://i.imgur.com/KDyTNoG.png) 合併請求頁面如下: ![](https://i.imgur.com/kH1uOeL.png) ![](https://i.imgur.com/ziCq8Nm.png) :::info 記得填寫Assignee將合併請求指派給codeReview對象或是主管 並勾選Remove source branch when merge request is accepted. 合併完後刪除此功能分支。 ::: 填寫完即可送出。 9. codeReview的人或是主管,點選專案左方選單 **合併請求** 即可看到剛剛傳送的的合併請求 ![](https://i.imgur.com/CRNN6uo.png) 進入此請求後,點選下方Changes即可看到本次功能增修之程式碼 ![](https://i.imgur.com/UfZWKUP.png) ![](https://i.imgur.com/g08AcyA.png) 確認沒問題後,就可以點移Merge按鈕,將此分支合併至master ![](https://i.imgur.com/Q2owTnB.png) 完成後上方將會顯示已合併,分支也會自動刪除 ![](https://i.imgur.com/PPiluiF.png) ## 備註 1 - 本地分支開發 ### VS Code 分支開發 1. 建立本地端分支,點選VS Code 左下方master,會出現分支選單 ![](https://i.imgur.com/FAbRRyu.png) 2. 點選新創的分支,即可切換分支 ![](https://i.imgur.com/eJiXN1z.png) ![](https://i.imgur.com/YmnWd0a.png) 3. 修改完後點選VS Code左方git圖示, 並點擊檔案右方的"+",將檔案Stage。 (git add file) ![](https://i.imgur.com/XnOBZl6.png) 4. 輸入commit訊息,並點擊右上方勾勾,即可完成commit (git commit -m "message") ![](https://i.imgur.com/WP4C0cV.png) 5. 點擊VS Code下方 ![](https://i.imgur.com/Lm50PEY.png) 確認後即可完成pull (git pull),完成本次修改。 ![](https://i.imgur.com/1GsGbNK.png) ### GitKraken 1. 建立本地端分支,點擊GitKraken專案下方REMOTE之新分支 ![](https://i.imgur.com/i0bVPSh.png) 點選Checkout origin/13 ![](https://i.imgur.com/7RI8N5j.png) 2. 即可切換至分支,進行修改 ![](https://i.imgur.com/73a8urf.png) 3. 修改完程式碼後,點擊上方最新區塊。 ![](https://i.imgur.com/eKkYp6H.png) 右方區塊,點選右上方Stage all changes (git add file) ![](https://i.imgur.com/I7vcKWn.png) 4. 填寫完message標題與描述,即可進行commit (git commit -m "message") ![](https://i.imgur.com/ApHoYlb.png) 5. commit完之後即可進行pull,完成本次修改。 ![](https://i.imgur.com/0chvxsV.png) ### command1 1. 先從雲端上clone git專案下來 git clone git@github.com:user/project.git 2. 進入專案 cd project 3. 查看遠端分支 git branch -r 4. 建立新local分支並與遠端連結 git checkout origin/new_branch -b new_branch 5. 修改檔案(程式碼) vim index.html 6. 修改完程式碼,即可進行commit git commit -m 'message' -a 7. 將程式碼push至git server git push ### command2 1. 先從雲端上clone git專案下來 git clone git@github.com:user/project.git 2. 進入專案 cd project 3. 查看遠端分支 git fetch 執行 fetch,可以取得遠端數據庫的最新歷史記錄。取得的提交會導入在自動建立的分支中,並可以切換這個名為 FETCH_HEAD 的分支。 4. 建立新local分支並與遠端連結 git checkout new_branch 5. 修改檔案(程式碼) vim index.html 6. 修改完程式碼,即可進行commit git commit -m 'message' -a 7. 將程式碼push至git server git push