
顾名思义,分支就是从主线上分离出来进行另外的操作,而又不影响主线,主线又可以继续干它的事,是不是有点像线程,最后分支做完事后合并到主线上而分支的任务完成可以删掉了。这样是不是很方便,主线继续做它的事,分支用来解决临时需求,二者互不相干。
git的分支功能特别的强大,它不需要将所有数据进行复制,只要重新创建一个分支的指针指向你需要从哪里开始创建分支的提交对象(commit),然后进行修改再提交,那么新分支的指针就会指向你最新提交的这个commit对象,而原来分支的指针则指向你原来开发的位置,当你在哪个分支开发,HEAD就指向那个分支的最新提交对象commt。没弄清楚没关系,先有这么一个概念,后面慢慢就会弄清的。
分支的底层也是指针的引用



这里创建了一个热修分支





这里分支就指向了hot-fix分支
同时路径下也出现了hot-fix版本

然后回到master分支

这里需要在master分支下进行操作
![]()
master是目标分支,hot-fix是要被合并的分支

合并成功

冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
查看状态(检测到有文件有两处修改)

接下来切换到hot-fix分支下进行修改

然后切换回master分支,合并

这里说自动合并failed,因为这里出现了合并代码冲突

正在合并中

然后我们打开hello.txt文件

HEAD指当前分支,HEAD和等号之间的代码是当前分支的代码,等号和>>>>>>号之间是hot-fix的代码,这里就不知道要合并那一部分的代码,这里就需要我们手动合并代码

这几行全部删掉,保证代码还是原来的行数,然后保存

然后
添加到暂存区和提交到本地库

这里一定不能加文件名了
同时也成功提交,两个版本的都有

这里只会修改master分支下的,而不会修改hot-fix分支下的代码
