01 | 什么是分支呢?
可以理解为程序员可以把自己的工作从主线分支上分离出来,单独开发自己的分支的时候,不会影响主线分支的运行,可以理解为一个分支就是一个单独的副本。
这个就是一个分支的示例图,主线分支为master。
02 | 分支的好处
可以同时进行多个功能的开发,提交开发效率。如果一个分支的失败,它不影响其他分支。
03 | 分支操作
也就那么几个命令,敲几下就熟悉了。
git branch -v
git branch <分支名>
git checkout <分支名>
git merge <分支名>
3.1 | 查看分支
可以使用命令
git branch -v
查看目前在什么分支
可以看到,我们目前在master分支上,提交版本号,提交备注
3.2 | 创建分支
可以使用命令
git branch <分支名>
,创建分支
再查看一下分支名
其实就是创建了一个新的分支,将主分支的内容复制了一份,也就是创建了一个副本(可以这么理解)
3.3 | 修改分支和切换分支
现在我们切换到
hot-fix
分支上
使用命令git checkout <分支名>
可以看到从
master
分支切换到了hot-fix
分支上
现在在
hot-fix
分支上,修改hello.txt
文件
既然修改了文件,我们还需要将文件进行提交
这个时候文件已经提交了,我们看一下提交的记录
可以看到,这个HEAD指向了
hot-fix
这个分支
如果这个时候,我们切换回去
master
分支,再查看一下hello.txt
文件
可以看到,之前在
hot-fix
分支上修改的内容没有了,这是因为我们现在在master
上,而那些内容的修改在hot-fix
上
3.3 | 合并分支(冲突合并)
使用命令
git merge <分支名>
,这个命令是吧,把哪个分支合并到我当前的分支上。
例如我在master
分支上执行git merge hot-fix
,说明把hot-fix
分支的内容合并到master
分支上
执行命令可以看到非常的顺利,没有产生冲突,为什么呢?
因为master
分支并没有修改,而这个hot-fix
分支改了,所以合并的时候,就可以看作master
改了。
但是有时候会出现冲突的情况。也就是两个分支在同一个文件的同一个位置,有两套不同的修改,Git是无法确定使用哪个的,这需要我们认为去决定这个合并后呈现的内容。
我们试着在
master
上修改文件内容,然后提交
现在切换回去
hot-fix
分支,对文件进行修改,然后提交
这个时候我们切回
master
分支,然后合并hot-fix
分支
可以看到这次合并后,提示不一样了
解释一下:
- 自动合并这个文件
- 冲突(内容):合并冲突在 <这个文件>
- 自动合并失败;修复冲突然后提交最后的结果
可以看到分支名发生了变化,后面出现了merging,说明文件正在合并中
查看一下状态
git status
解释:
- 在master分支上
- 你有一个没有合并的路径
(修复冲突然后进行git commint
提交)
(使用git merge --abort
去放弃合并)- 没有合并的路径
(使用git add <file>
去标记一下)
两个都修改了这个文件:hello.txt,可以看到这个文件是红色的,说明没有被放到暂存区
这个时候我们可以进行手动的去合并代码,进入文件内部,查看一下内容
可以看到他们的倒数第二行和倒数第一行是不一样,所以我们就要修改一下
保存完以后,添加提交一下
但是提交的时候发现报错了
- 致命错误:在合并期间无法执行部分提交。
因为Git不知道你要提交那个hello.txt文件,这个时候不要带文件参数
当我们提交完成以后,这个合并中的状态已经没有了,变回了
master