Git中分支操作的相關命令:
- $ git branch <new-branch> # 創建新分支
- $ git push <remote_name> <local_branch>:<remote_branch> # 將新建分支push到遠端
- $ git checkout <branbch_name> # 切換到指定分支
- $ git checkout -b <branbch_name> # 創建並切換到新分支
- $ git merge <branch_name> # 將指定分支合並到當前分支
- $ git branch -d <branch_name> # 刪除指定分支
- $ git checkout -b [branch] [remote_name]/[branch] # 設置跟蹤分支
- $ git branch -vv // 查看本地分支跟蹤的遠程分支
- $ git branch [-u]/[--set-upstream-to] [remote_name]/[branch] # 修改正在跟蹤的上游分支
- $ git push [remote_name] --delete [branch_name] # 刪除指定遠程分支
1. 分支創建
Git 創建分支時只是為你創建了一個可以移動的新的指針。 比如,創建一個 testing 分支, 你需要使用 git branch 命令:
$ git branch testing
這會在當前所在的提交對象上創建一個指針:

如果需要將新建的分支push到遠端倉庫可以使用如下命令:
$ git push origin testing:testing
會在遠端服務器創建一個名為testing的新分支,執行git branch -a命令會看到如下一行新增信息:remotes/origin/testing
2. 分支切換
要切換到一個已存在的分支,你需要使用 git checkout 命令。例如:
$ git checkout testing
這樣 HEAD 就指向 testing 分支了。

如果你想要在創建一個分支的同時切換到該分支,可以執行帶有 -b 參數的 git checkout 命令。例如:
$ git checkout -b branch_name
它是下面兩條命令的簡寫:
$ git branch branch_name
$ git checkout branch_name
3. 分支合並
通過 git merge 命令可以實現分支合並的操作,例如:

在這種情況下,你的開發歷史從一個更早的地方開始分叉開來(diverged)。 因為,master 分支所在提交並不是 iss53 分支所在提交的直接祖先,Git 不得不做一些額外的工作。 出現這種情況的時候,Git 會使用兩個分支的末端所指的快照(C4 和 C5)以及這兩個分支的工作祖先(C2),做一個簡單的三方合並。
和之前將分支指針向前推進所不同的是,Git 將此次三方合並的結果做了一個新的快照並且自動創建一個新的提交指向它。 這個被稱作一次合並提交,它的特別之處在於他有不止一個父提交。
3. 跟蹤分支
從一個遠程跟蹤分支檢出一個本地分支會自動創建所謂的 “跟蹤分支”(它跟蹤的分支叫做 “上游分支”)。 跟蹤分支是與遠程分支有直接關系的本地分支。 如果在一個跟蹤分支上輸入 git pull,Git 能自動地識別去哪個服務器上抓取、合並到哪個分支。
查看本地分支跟蹤的遠程分支可以使用以下命令: git branch -vv
然而,如果你願意的話可以設置其他的跟蹤分支,或是一個在其他遠程倉庫上的跟蹤分支,又或者不跟蹤 master 分支。 最簡單的實例就是像之前看到的那樣,運行 git checkout -b [branch] [remotename]/[branch]。 這是一個十分常用的操作所以 Git 提供了 --track 快捷方式:
如果想要將本地分支與遠程分支設置為不同名字,你可以輕松地使用上一個命令增加一個不同名字的本地分支:

設置已有的本地分支跟蹤一個剛剛拉取下來的遠程分支,或者想要修改正在跟蹤的上游分支,你可以在任意時間使用 -u 或 --set-upstream-to 選項運行 git branch 來顯式地設置。

4. 刪除遠程分支
假設你已經通過遠程分支做完所有的工作了 - 也就是說你和你的協作者已經完成了一個特性並且將其合並到了遠程倉庫的 master 分支(或任何其他穩定代碼分支)。 可以運行帶有 選項的 git push 命令來刪除一個遠程分支。 如果想要從服務器上刪除 serverfix 分支,運行下面的命令:

