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
上面顯示結果中,當前有兩個分支:master 和 wchar_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
$