git branch命令

git branch命令用於列出,創建或刪除分支。

簡介

git branch [--color[=<when>] | --no-color] [-r | -a]
    [--list] [-v [--abbrev=<length> | --no-abbrev]]
    [--column[=<options>] | --no-column] [--sort=<key>]
    [(--merged | --no-merged) [<commit>]]
    [--contains [<commit]] [--no-contains [<commit>]]
    [--points-at <object>] [--format=<format>] [<pattern>…​]
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>…
git branch --edit-description [<branchname>]

描述

如果給出了--list,或者如果沒有非選項參數,則列出現有的分支; 當前分支將以星號突出顯示。 選項-r導致遠程跟蹤分支被列出,而選項-a顯示本地和遠程分支。 如果給出了一個<pattern>,它將被用作一個shell通配符,將輸出限制爲匹配的分支。 如果給出多個模式,如果匹配任何模式,則顯示分支。 請注意,提供<pattern>時,必須使用--list; 否則命令被解釋爲分支創建。

使用--contains,僅顯示包含命名提交的分支(換句話說,提示提交的分支是指定的提交的後代),--no-contains會反轉它。 隨着已經有了,只有分支合併到命名提交(即從提交提交可以提前提交的分支)將被列出。 使用--no合併只會將未合併到命名提交中的分支列出。 如果缺少<commit>參數,則默認爲HEAD(即當前分支的提示)。

示例

以下是一些示例 -

1. 查看當前有哪些分支

$ git branch
  master
* wchar_support

上面顯示結果中,當前有兩個分支:masterwchar_support,當前在 wchar_support 分支上,它前面有個星號(*)。

2. 新建一個分支

下面命令將創建一個分支:dev2 -

$ git branch dev2

3. 切換到指定分支

下面命令將切換到指定分支:dev2 -

$ git checkout dev2
$ # 再次查看分支
$ git branch
* dev2
  master
  wchar_support

4. 查看本地和遠程分支

$ git branch -a
* dev2
  master
  wchar_support
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/wchar_support

5. 將更改添加到新建分支上

$ git status
On branch dev2
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        newfile.txt

nothing added to commit but untracked files present (use "git add" to track)

Administrator@MY-PC /D/worksp/sample (dev2)

$ git add newfile.txt

Administrator@MY-PC /D/worksp/sample (dev2)

$ git commit newfile.txt -m "commit a new file: newfile.txt"
[dev2 c5f8a25] commit a new file: newfile.txt
 1 file changed, 2 insertions(+)
 create mode 100644 newfile.txt

Administrator@MY-PC /D/worksp/sample (dev2)

$ git push origin dev2
Username for 'http://git.oschina.net': [email protected]
Password for 'http://[email protected]@git.oschina.net':
Counting objects: 12, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (11/11), 965 bytes | 0 bytes/s, done.
Total 11 (delta 3), reused 0 (delta 0)
To http://git.oschina.net/yiibai/sample.git
 * [new branch]      dev2 -> dev2

Administrator@MY-PC /D/worksp/sample (dev2)
$

6. 修改分支的名字

$ git branch
* dev2
  master
  wchar_support

Administrator@MY-PC /D/worksp/sample (dev2)
$ git branch -m dev2 version.2

Administrator@MY-PC /D/worksp/sample (version.2)
$ git branch -r
  origin/HEAD -> origin/master
  origin/dev2
  origin/master
  origin/wchar_support

Administrator@MY-PC /D/worksp/sample (version.2)
$ git branch
  master
* version.2
  wchar_support

7. 刪除遠程分支

刪除一個名稱爲:dev2 的遠客

$ git branch
  master
* version.2
  wchar_support

Administrator@MY-PC /D/worksp/sample (version.2)
$ git push origin --delete dev2
Username for 'http://git.oschina.net': [email protected]
Password for 'http://[email protected]@git.oschina.net':
To http://git.oschina.net/yiibai/sample.git
 - [deleted]         dev2

8. 合併某個分支到當前分支

合併分支:version.2到當前分支(master),如下 -

$ git branch
  master
* version.2
  wchar_support

Administrator@MY-PC /D/worksp/sample (version.2)
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

Administrator@MY-PC /D/worksp/sample (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

Administrator@MY-PC /D/worksp/sample (master)
$ git merge version.2
Updating e7d1734..c5f8a25
Fast-forward
 mydir/text.txt | 0
 newfile.txt    | 2 ++
 src/string.py  | 5 ++++-
 3 files changed, 6 insertions(+), 1 deletion(-)
 create mode 100644 mydir/text.txt
 create mode 100644 newfile.txt

$