欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git 常用命令 - Branch

程序员文章站 2022-05-21 09:46:11
...
概念
Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。

显示所有分支
$ git branch 
  branch_test
  branch_test2
* master
说明:* 代表当前工作分支

创建分支
$ git branch <branch name>
注意:运行 git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去,所以在这个例子中,我们依然还在 master 分支里工作。

说明:Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。请注意它和你熟知的许多其他版本控制系统(比如 Subversion 或 CVS)里的 HEAD 概念大不相同。在 Git 中,它是一个指向你正在工作中的本地分支的指针(译注:将 HEAD 想象为当前分支的别名。)。

切换分支
$ git checkout <branch name>
此时,HEAD 就指向了指定的分支。

新建并切换到该分支
$ git checkout -b <branch name>
这相当于执行下面这两条命令:
$ git branch <branch name>
$ git checkout <branch name>

查看各个分支最后一次提交对象的信息
$ git branch -v
  branch_test  fd0a4a0 add branch_visible.txt
  branch_test2 1376712 add branch2.txt
* master       fd0a4a0 add branch_visible.txt

删除分支
$ git branch -d <branch name>

列出已经与当前分支合并的分支
$ git branch --merged 
  branch_test
* master
说明:一般来说,列表中没有 * 的分支通常都可以用 git branch -d 来删掉。原因很简单,既然已经把它们所包含的工作整合到了其他分支,删掉也不会损失什么。

列出尚未与当前分支合并的分支
$ git branch --no-merged 
  branch_test2
说明:由于该分支中还包含着尚未被合并进来的其它分支,所以简单地用 git branch -d 删除尚未被合并进来的分支时会提示错误,因为这样做会造成数据丢失:
$ git branch -d branch_test2
error: 分支 'branch_test2' 没有完全合并。
如果您确认要删除它,执行 'git branch -D branch_test2'。
不过,如果你确实想要删除该分支上的改动,可以用大写的删除选项 -D 强制执行,就像上面提示信息中给出的那样。

合并分支
$ git merge <branch name>
假如希望把分支(branch_test)上的代码合并到主干(master)上,可以按如下步骤进行:
1. 切换到 master 分区
2. 执行如下命令进行合并操作:
$ git merge branch_test
更新 5773b62..fd0a4a0
Fast-forward
 branch_visible.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 branch_visible.txt

创建远程分支(将本地分支 push 到远程)
$ git push <remote> <local branch name>[:remote branch name]
例如,将本地的 branch_test 分支上传到远程仓库,远程分支的名字仍叫 branch_test:
$ git push origin branch_test(相当于 git push origin branch_test:branch_test)
Username for 'url': <your user name>
Password for 'url': <your password>
对象计数中: 3, 完成.
Delta compression using up to 4 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 295 bytes | 0 bytes/s, 完成.
Total 3 (delta 0), reused 0 (delta 0)
To <git url>
 * [new branch]      branch_test -> branch_test

删除远程分支
$ git push <remote> :<branch name>
例如:
$ git push origin :branch_test3
Username for 'url': <your user name>
Password for 'url': <your password>
To <git url>
 - [deleted]         branch_test3
更加完整的写法如下:
$ git push origin :heads/branch_test2
Username for 'url': <your user name>
Password for 'url': <your password>
To <git url>
 - [deleted]         branch_test2

参考文献:
https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF
http://www.cnblogs.com/springbarley/archive/2012/11/03/2752984.html
相关标签: git branch