什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务地单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支地时候,不会影响主线分支地运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
2.分支的好处
同时并行推进各个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.分支的操作
命令名称 | 作用 |
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
3.1查看分支
git branch -v
![](https://i-blog.csdnimg.cn/blog_migrate/fd3c31f198e7409230a4dbfebb93e29a.png)
只有master分支
3.2创建分支
创建热修分支hot-fix
![](https://i-blog.csdnimg.cn/blog_migrate/80f62d3dd3b3d120fc3f139c8baab2a8.png)
现在已经有两个分支了
3.3修改分支
在master分支上修改hello.txt
退出hello.txt::q!
如何切换到热修分支上
![](https://i-blog.csdnimg.cn/blog_migrate/ec71e7052458aa66a8fdfe0205e9fb6e.png)
现在查看分支
![](https://i-blog.csdnimg.cn/blog_migrate/12f998269ebda84349d1dd5ce3e8ac73.png)
在hot-fix分支上修复hello.txt
i在hello.txt文件上加1222,:wq保存退出
![](https://i-blog.csdnimg.cn/blog_migrate/d53f8d21ac8139f831504cc9109bb430.png)
![](https://i-blog.csdnimg.cn/blog_migrate/03b8b555298016cb0772761b23788774.png)
3.4合并分支
![](https://i-blog.csdnimg.cn/blog_migrate/971d028a3e4b9f9ec6ea44487ff04d1a.png)
git merge 要合并的分支
把指定的分支合并到当前的分支上
![](https://i-blog.csdnimg.cn/blog_migrate/e185dd46d39c9ce4aa09083860a5cb66.png)
master分支没改,hot-fix分支改了,合并起来就是改了后的。
3.5合并分支(冲突合并)
什么时候会产生冲突:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
在master下修改hello.txt文件,在倒数第二行加上master test
![](https://i-blog.csdnimg.cn/blog_migrate/2bf29893f5f5c977a19880b4e710c874.png)
分支再切回hot-fix,进行修改
在倒数第一行加上hot-fix test
![](https://i-blog.csdnimg.cn/blog_migrate/463ad54e84fb333e1f4dfe5d70856209.png)
再切回master分支
![](https://i-blog.csdnimg.cn/blog_migrate/943875eb12dc9c9553d409d41e348c90.png)
查看本地库状态,是没有合并成功的:
![](https://i-blog.csdnimg.cn/blog_migrate/297c27d5014b407e7ecda459154a3102.png)
手动合并代码
vim hello.txt
![](https://i-blog.csdnimg.cn/blog_migrate/c07b76991df416b28f231c64f89ec025.png)
手动修改:删除特殊符号和master的最后一行和hot-fix的倒数第二行
![](https://i-blog.csdnimg.cn/blog_migrate/565c3a5ecf5d7c12afcf39fb6549f0aa.png)
后面还要添加暂存区,提交本地库才行
![](https://i-blog.csdnimg.cn/blog_migrate/61718f3fcd76fb69d84b2a5a8bd0d4be.png)
此时已经手动合并了
![](https://i-blog.csdnimg.cn/blog_migrate/05165d29d1215b12342f630dced1e187.png)
但是时master下合并了,但是hot-fix并没有合并:
![](https://i-blog.csdnimg.cn/blog_migrate/8a04bdb86a1029b69517f08e98ffa8c8.png)