# Git分支管理 ### 分支命名規則: {種類}/{更改內容}/{執行人}/{日期} 種類可分為以下幾種常用,也可依照團隊需求修改 ``` feature: 一般開發或修改刪除功能 bug: 修正問題 test: 實驗性質分支 ``` 舉例: feature/add-something/randy/0426 規格化分支名稱可以方便於快速查看分支 =>到底做了甚麼 =>執行人,有程式問題可以直接詢問 =>執行日期,可以判斷分支新舊 因為通常一個分支不太會執行超過一年 所以日期不太需要加上年分 實際體驗是在察看手上現有分支時,可以很快地知道那些分支是需要使用的 哪些是可以刪除的,在執行不同分支也不會容易搞混 ### 分支刪除時間點: 在合併回master時,若使用merge quest,通常會勾選合併時一併刪除分支,詳見Code Review 流程,若是手動合併的話,依照個人習慣刪除,<u>**當下刪除**</u>或是<u>**一定時間(ex. 一周)刪除**</u>,原則是負責刪除自己的分支,而<u>**分支命名**</u>就可以很好辨別分支主人是誰。 ### 開發時的分支流程: ### ※單人開發 在單人開發時,通常會有一個 Master 分支作為主分支,開發人員可以從 Master 分支切出一個新分支進行開發,開發完成後再將其 merge 回 Master 分支。 以下是單人開發時的步驟: **確認目前所在分支為 Master 分支:** `git branch 或 git status` ————————————————————————————————————— **從 Master 分支切出一個新分支,其中 new-branch 是自訂的分支名稱。:** ``` git checkout -b new-branch ``` ————————————————————————————————————— **在新分支上進行開發,開發完成推送分支。** ``` git push -u origin new-branch // 此用於新分支未推送遠端時 git push // 此用於分支先前有推送過遠端 ``` ————————————————————————————————————— **切換回 Master 分支:** `git checkout master` ————————————————————————————————————— **將新分支合併回 Master 分支:** `git merge new-branch` ————————————————————————————————————— **刪除新分支:** `git branch -d new-branch` ### ※協同開發 在協同開發時,通常需要一個主分支來作為整個專案的核心,所有開發人員都需要從此主分支切出新的分支進行開發,最後再將其 merge 回主分支,再由一個人負責將主分支 merge 回 Master 分支。 以下是協同開發時的步驟: **創建一個主分支作為整個專案的核心:** `git branch main` ————————————————————————————————————— **確認目前所在分支為主分支:** `git branch 或 git status` ————————————————————————————————————— **從 Master 分支切出一個新分支,其中 new-branch 是自訂的分支名稱。:** `git checkout -b new-branch` ————————————————————————————————————— **在新分支上進行開發,開發完成推送分支。:** ``` git push -u origin new-branch // 此用於新分支未推送遠端時 git push // 此用於分支先前有推送過遠端 ``` ————————————————————————————————————— **開發完成後,將新分支合併回主分支:** ``` git checkout main git merge new-branch ``` ————————————————————————————————————— **由一個人負責將主分支合併回 Master 分支:** ``` git checkout master git merge main ``` **※注意:在進行 merge 操作之前,應確保自己的分支是最新的,可以使用 git pull** --------------------