概念
Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。
显示所有分支
1 | $ git branch |
说明:* 代表当前工作分支
创建分支
1 | $ git branch <branch name> |
注意:运行 git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去,所以在这个例子中,我们依然还在 master 分支里工作。
说明:Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。请注意它和你熟知的许多其他版本控制系统(比如 Subversion 或 CVS)里的 HEAD 概念大不相同。在 Git 中,它是一个指向你正在工作中的本地分支的指针(译注:将 HEAD 想象为当前分支的别名。)。
切换分支
1 | $ git checkout <branch name> |
此时,HEAD 就指向了指定的分支。
新建并切换到该分支
1 | $ git checkout -b <branch name> |
这相当于执行下面这两条命令:
1 | $ git branch <branch name> |
查看各个分支最后一次提交对象的信息
1 | $ git branch -v |
删除分支
1 | $ git branch -d <branch name> |
列出已经与当前分支合并的分支
1 | $ git branch --merged |
说明:一般来说,列表中没有 * 的分支通常都可以用 git branch -d 来删掉。原因很简单,既然已经把它们所包含的工作整合到了其他分支,删掉也不会损失什么。
列出尚未与当前分支合并的分支
1 | $ git branch --no-merged |
说明:由于该分支中还包含着尚未被合并进来的其它分支,所以简单地用 git branch -d 删除尚未被合并进来的分支时会提示错误,因为这样做会造成数据丢失:
1 | $ git branch -d branch_test2 |
不过,如果你确实想要删除该分支上的改动,可以用大写的删除选项 -D 强制执行,就像上面提示信息中给出的那样。
合并分支
1 | $ git merge <branch name> |
假如希望把分支(branch_test)上的代码合并到主干(master)上,可以按如下步骤进行:
- 切换到 master 分区
- 执行如下命令进行合并操作:创建远程分支(将本地分支 push 到远程)
1
2
3
4
5
6$ 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例如,将本地的 branch_test 分支上传到远程仓库,远程分支的名字仍叫 branch_test:1
$ git push <remote> <local branch name>[:remote branch name]
删除远程分支1
2
3
4
5
6
7
8
9
10$ 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例如:1
$ git push <remote> :<branch name>
更加完整的写法如下:1
2
3
4
5$ git push origin :branch_test3
Username for 'url': <your user name>
Password for 'url': <your password>
To <git url>
- [deleted] branch_test3参考文献:1
2
3
4
5$ 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