---
# System prepended metadata

title: Git分支管理

---

# 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**

--------------------

