@toc
👋👋欢迎来到👋👋
🎩魔术之家!!🎩书接上文,在第一天中,我们学会了git的基本概念和基础命令,接下来我们讲解重要的知识点 --- 分支
分支是什么?
几乎所有版本控制系统都以着不同形式支持分支,如SVM,分支是用于项发开发中从开发从主线分离出去,适用于修改bug,功能开发等,而不影响主线,每个开发人员等到开发完之后,再将分支合并merge到主分支
master
查看分支
git branch
创建分支
git branch 自定义名称
可以看到创建成功
查看创建分支版本
git log
也可以用上一文章所别名的指令(这里的git-log
是别名过的,见上一篇文章配置别名,或者使用git log
也可以)
git-log
这里的HEAD - >
什么意思呢, 是指向对应分支的意思
假如多个分支,我们只能对当前分支进行修改,不能同时多个分支修改
接下来我们提交修改之前所修改的ignore文件,
git add .
git commit -m "添加 。ignore"
可以看到我们的提交是提交到主分支 master
, 对分支demo01没有影响,
那么在分支demo01
是没有所提交的.ignore
文件的
切换分支
git checkout demo01
查看日志(这里的git-log
是别名过的,见上一篇文章配置别名,或者使用git log
也可以)
git-log
可以看到HEAD -- > 指向了当前分支demo01
此时文件是没有之前所添加的.ingore
文件
切换回主分支,可以看到之前添加的.ingore
文件存在
创建分支并切换
创建分支并且切换到该分支
git checkout -b demo02
*合并分支
git merge 分支名
在进行分支合并前应该先切换分支checkout
到需要合并的分支并提交,
为了显示合并的效果,我们在demo01
分支创建文件 file.txt
,
看合并后,会不会新增file.txt
文件
touch file.txt
如图我们合并
demo01
:
弹出提示框(vi
编辑框) 按Esc
输入:wq
退出vi
编辑
从图中可以看到,在修改分支时,*号指向分支,合并操作后分支回到主分支master(相当于两条线开发,然后回到一条线)
删除分支
注意:
分支删除不能删除当前所在分支,需要删除需要切换到其他分支
命令
git branch -d 分支名称 注释:在删除时,需要做各项检查,安全删除
git branch -D 分支名称 注释:不做任何检查,暴力删除
我们可以删除分支demo1,此时demo1已经合并了,
git branch -d demo01
解决冲突
场景:如果有两个开发人员,修改了同一个文件同一块区域,那么合并时候就会发生冲突,此时需要人工解决冲突
我们可以看一个例子:新建分支demo3,并分别在master主分支和demo3分支修改同一文件的同一行.
如图对demo3分支,同理对master主分支
查看日志
进行合并,报错:
打开修改的file01.txt 文件
可以看到修改的内容冲突用 ====== 隔开,
解决方法
步骤:
- 处理文件中冲突的地方(不修改就会原样上传)
将解决完的文件加入暂存区(add)
- 提交到仓库
简单粗暴,只需要删掉不需要的值即可,或者修改为你想要的也可以
接着提交修改
git add .
git commit 注释:这里可以加上 -m 说明冲突消息,也可以不加 -m 会有下图提示效果
查看日志
此时file01.txt 文件内容也是我们所修改的
实际开发的分支使用原则和流程
实际开发 会有一些 关于分支开发的标准,一般有如下分支使用原则与标准
- master (生产) 分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
- master (生产) 分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
- feature/xxxx分支
从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支
- hotfix/xxxx分支,
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。(bug其他版本也要修改)