Pro Git 3.3 分支管理

出自DILA Wiki

到目前為止,你已經學會了如何創建、合併和刪除分支。除此之外,我們還需要學習如何管理分支,在日後的例行工作中會經常用到下面介紹的管理命令。

git branch 命令不僅僅能創建和刪除分支,如果不加任何參數,它會給出當前所有分支的清單:

$ git branch
  iss53
* master
  testing

注意看 master 分支前的 * 字元:它表示當前所在的分支。也就是說,如果現在提交更新,master 分支將隨著開發進度前移。若要查看各個分支最後一次 commit 資訊,運行 git branch -v:

$ git branch -v
  iss53   93b412c fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 add scott to the author list in the readmes

要從該清單中篩選出你已經(或尚未)與當前分支合併的分支,可以用 --merge 和 --no-merged 選項(Git 1.5.6 以上版本)。比如 git branch -merge 查看哪些分支已被併入當前分支:

$ git branch --merged
  iss53
* master

之前我們已經合併了 iss53,所以在這裡會看到它。一般來說,清單中沒有 * 的分支通常都可以用 git branch -d 來刪掉。原因很簡單,既然已經把它們所包含的工作整合到了其他分支,刪掉也不會損失什麼。

另外可以用 git branch --no-merged 查看尚未合併的工作:

$ git branch --no-merged
  testing

我們會看到其餘還未合併的分支。因為其中還包含未合併的工作,用 git branch -d 刪除該分支會導致失敗:

$ git branch -d testing
error: The branch 'testing' is not an ancestor of your current HEAD.

不過,如果你堅信你要刪除它,可以用大寫的刪除選項 -D 強制執行,例如 git branch -D testing。