首先明确两个概念。
分支:分支的本质是指向commit对象(每个版本库就是commit对象)的可变指针,可以有若干分支,也即可以创建若干指针;
Head:Head是一个特别指针,指向你正在工作的本地分支,有了Head指针Git才知道你当前在哪个分支上工作;
1. git branch
列出所有分支,并且用*标明当前所在分支;
2. git brach <name>
创建一个新分支,且该分支(指针)指向的commit对象,就是创建新分支时所在分支指向的commit对象;
3. git checkout <name>
- 切换到指定分支,本质上是Head指针指向了指定分支,且对工作区的修改就是针对指定分支了;
- 修改工作区文件后,再去切换分支,会发现工作区文件不一样,瞬间就会发现Git的MAGIC;
4. git merge <name>
- 合并指定分支到当前分支;
- 如果是“Fast-forward”合并模式,本质上就是把master分支(指针)指向了新分支(指针)所指向的commit对象;
5. git branch -d <name>
删除指定分支;
最后总结分支的意义所在:因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master
分支上工作效果是一样的,但过程更安全。