git branch命令
精华
小牛编辑
155浏览
2023-03-14
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': 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/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': 769728683@qq.com
Password for 'http://769728683@qq.com@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
$