Git学习笔记 (6) - Branch基础

Git分支是轻量级的

在Git中,branch就是一个轻量级的file(40个字节),有一个特殊的指针HEAD来指示Git位于哪个分支。

和其他版本控制软件相比,Git分支是轻量级的,鼓励多用分支。

例如,在某个仓库下运行下来命令,可以看到这个仓库下有2个分支:master,testing,同时HEAD是指向master的,即当前工作的分支为master

1
2
3
$ git log --oneline --decorate
f30ab (HEAD -> master, testing)
...

分支常用命令

创建和switch

1
2
git branch testing     // 创建分支testing,但是仍在原先分支下
git checkout testing // Switch到分支testing

上述两条命令可以合并成一条命令:

1
git checkout -b testing

删除

和创建相比,多了一个option:-d

1
git branch -d testing

Merge 与 Rebase

例如,master分支合并testing分支

1
2
git checkout master     // 如果不在master分支下,需要先switch到master分支
git merge testing

把testing上改变rebase到master上面

1
2
git checkout testing
git rebase master

rebasemerge最后得到的新的snapshot是一样的,但是rebase可以得到a cleaner history(看上去history是一个串行的记录过程)。 而merge看到的history中间有分支然后再合流成一个(在merge的点)

list

把仓库里面的分支list出来:

1
git branch

分支管理其他命令

1
2
3
git branch -v           // 查看每个branch的最后一次commit
git branch --merged // 合并到当前分支的所有分支
git branch --no-merged // 未合并到当前分支的所有分支