Git分支#
概念:本质上是指向 提交节点 的可变指针,默认名字是master
注意:HEAD指针影响工作区/暂存区的代码状态

一个库可能有多个分支,所以有一个HEAD指针指向其中之一,代表当前分支
分支使用场景:开发 新需求/修复bug ,保证主线代码随时可用,多人协同开发提高效率
例如:在现有代码上创建分支完成内容列表业务
再比如,突然需要紧急修复bug-单独创建分支解决bug
对于一个项目中的多个业务模块,可以创建多个分支,由不同人员协同开发,且不会影响主分支

模拟测试#
需求:创建内容列表content分支,并产生3次提交记录
-
创建分支命令:
git branch 分支名
-
切换分支命令:
git checkout 分支名
- 工作区准备代码并暂存提交,重复3次
创建和切换分支

模拟创建一个content页面文件夹,放入1,2,3.txt文件分别模拟html、css、js

每创建一个暂存提交一次,形成content分支下3个版本
然后我们来看一下版本log

可以发现,
master
分支依旧保留,
HEAD
已指向
content
分支,其下创建了3个版本
git checkout master切换回master分支后就会发现创建的content及其下的三个文件不见了,是因为它们是在创建content分支后被创建的,在这之前的master分支自然不存在这几个文件
分支-合并与删除#
将content分支合并回到master分支并删除content分支
步骤:
-
切回到要合入的分支上:
git checkout master
-
合并其他分支过来:
git merge content
-
删除合并后的分支指针:
git branch -d content
切换master分支并合并

合并后可以发现,尽管切换到master分支,在当前库根目录下content分支创建的三个测试文件依旧存在,说明合并成功
分支最新代码已合并到master,接下来将多余的分支删除

分支-合并冲突#
需求1:基于master新建publish分支,修改一个html文件的title标签,并提交一次
需求2:切换到master,也修改html文件的title标签,并提交一次
冲突:把publish分支合并到master,产生合并冲突
概念: 不同分支中,对同一文件的同一部分修改,Git无法干净地合并,产生合并冲突

解决:
- 打开vscode找到冲突文件并手动解决
- 解决后需要提交一次记录
创建分支并切换

在publish分支修改文档title

提交暂存后切换至master再次修改title

提交暂存后开始合并分支,发现错误


可以点击冲突详情上的四个选项进行选择保留方式,解决冲突后再次提交暂存,即可完成merge合并,此时即可删除多余分支publish

避免方式:
- 多与组内成员沟通
- 按页面划分不同分支开发
- 公共代码在统一文件夹维护
- Node等软件版本统一,npm包统一下载