>## 分支在实际中有什么用呢?
假设你们公司的项目已经上线了,产品经理觉得应该新增一些新的功能,但是为了保险起见,你肯定不能在当前项目上直接进行开发,这时候你就需要创建分支了。
又或者你准备开发一个新功能,但是需要两周才能完成,第一周你写了一半的代码,如果立刻提交,不完整的代码会导致别人不能干活了。
>## 创建分支
```
git branch 分支名
```
比如创建一个叫做`dev`的分支
```
git branch dev
```
使用`git branch -a`可以查看所有的分支,*开头的表示你现在处于哪个分支
![](https://img.kancloud.cn/fa/68/fa689dbede5e01f89e729f748c1383e4_678x71.png)
使用`git log --oneline --decorate --graph --all`可以看到精简版的日志与分支信息
![](https://img.kancloud.cn/2d/df/2ddf258e1d5bce096d33c2dad0c16795_864x148.png)
>## 切换分支
```
git checkout 分支名
```
切换到刚刚创建的`dev`分支
```
git checkout dev
```
![](https://img.kancloud.cn/d0/66/d0666df64b2d2793086fc5243e2ab2b5_922x326.png)
>## 合并分支与删除分支
```
git merge 分支名
```
比如我在`dev`分支下一顿骚操作完成后,想合并到master分支,先切换到master分支执行命令`git merge dev`
如果出现如下, 则表示有冲突,如果没有冲突就完成了。
![](https://img.kancloud.cn/0b/15/0b15c2aa972150dfebcac9d40d456ef4_768x96.png)
表示a.log有问题在合并是有冲突,意思是说现在你需要先解决冲突的问题,Git 才能进行合并操作。所谓冲突,无非就是像两个分支中存在同名但内容却不同的文件,Git 不知道你要舍弃哪一个或保留哪一个,所以需要你自己来决定。
![](https://img.kancloud.cn/0e/5b/0e5b127c3fd0852faaf9cab7184ed5b8_551x260.png)
以`======`为界,上到`<<<<<<< HEAD`的内容表示当前分支,下到`>>>>>>> dev`表示dev 分支,之间的内容就是冲突的地方。
修改完冲突后,`git commit -am "注释"`再次提交即可
一般在使用合并完该分支后,该分支的使命也就完成了。可以删除了。
~~~
git branch -d 分支名
~~~