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 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': 769728683@qq.com Password for 'http://769728683@qq.com@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/zyiz/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': 769728683@qq.com Password for 'http://769728683@qq.com@git.oschina.net': To http://git.oschina.net/zyiz/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 ++++- files changed, 6 insertions(+), 1 deletion(-) create mode 100644 mydir/text.txt create mode 100644 newfile.txt $