分支
- 分支的概念
- 2077 与 分支
- git - 分支
- 分支语句
- 查看与创建分支
- 切换与删除分支
- 合并分支
- 分支冲突
- 分支分类
分支的概念
什么是分支?
2077 与 分支
我最喜欢的游戏就是 赛博朋克2077,美国末日 和 GTA,下图是2077的存档。
存档非常多的原因是因为不同的选择会最后有不同的结果,但是又不想每次从头开始,所以就在产生选择的地方建立 “分支”,可以自由选择分支玩耍。
如同下图一样,黄色就是选择男性角色,蓝色就是选择女性角色…
而黄色,蓝色,绿色这都称为分支,branch。
git - 分支
在 Git 中,分支的作用含义相同,可以通过建立分支从主线上进行分离,然后对 bug 进行修改,修改后可以覆盖主线;也可以分离后彻底自由,走一条不一样的路…
e . g . e.g. e.g.
比如我这里有三个分支:
然后我修改文件,从 dev01 分支进行提交:
查看log
发现只有 dev01 提交了,切换到 master 发现文件内容与 dev01 分支下内容不同。
这个就是分支的概念,其实如果想彻底理解分支概念,强烈建议自行尝试…
分支语句
查看与创建分支
查看分支
git branch
创建分支
git branch 分支名
切换与删除分支
切换到已有分支
切换分支就像我们一打开2077时选择存档一样…
git checkout dev01
# 切换到 dev01 分支
创建并且切换到分支
git checkout -b 分支名
删除分支
git branch -d 分支名
强制删除分支
git branch -D 分支名
合并分支
合并分支
一般我们的开发都是开发一个独立的分支修改代码,写完后合并到 master 上;
第一步:切换到 master
git checkout master
第二步:合并到 master
git merge dev01
# 将 dev01 所有的修改合并到 master 上
合并后,master 分支上既有 master 自己添加的内容,也包含 dev01 新添加的内容;
分支冲突
其实在阅读 合并分支 时,读者就应该产生一个疑问:如果我们在master上修改了一个文件,在dev01分支上也修改了这个文件,那么合并是如何合并的??
假如我们在 master 上修改 test.txt 文件内容;同时在 dev01 分支上同样修改 test.txt 文件内容,然后都进行提交;并回到 master,进行合并操作:
爆出错误: 产生冲突 Merge conflict,自动合并失败,需要人工介入;
解决办法: 打开 test.txt,人工介入:
其中 <<<<<<< HEAD 意思为当前 master 分支中 test.txt 内容 ;>>>>>>> dev01 意思是 dev01 分支中 test.txt 内容;
手动更改 test.txt 中冲突内容,然后 add commit
分支分类
一般企业中将分支分为几类:
master 主分支
release 版本
hotfix bug 修复
develop 新功能合并
feature 新功能开发
有几种应用场景:
- 产品运行出现 bug,但是服务器不能停,我们建立一个分支 hotfix,修改 bug 测试解决问题后合并到 master,合并后可以删除 hotfix;
- 产品新开发功能,每个功能开发在分支 feature 中,个人开发测试完成后合并到 develop 分支,需要线上部署时,从 develop 分支部署到 master 分支中;
- bug 不着急解决,那么 hotfix 解决问题后合并到 develop 分支,随着下一次的线上部署,部署到 master分支;
- 不断 release 标记每次上线节点;
- feature 分支建立多少直接按照功能开发分给多少员工,每个员工一个分支,负责一项功能;