目录
当前位置: 首页 > 教程 > Git >

git branch命令

精华
小牛编辑
150浏览
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

上面显示结果中,当前有两个分支: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': 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

$