当前位置: 首页 > news >正文

Git分支管理

愿所有美好如期而遇


目录

理解分支

创建分支

切换分支

合并分支

删除分支

合并冲突

分支管理策略


理解分支

每次提交master都会前进一步,随着不断提交,master分支的线越来越长,而HEAD指向哪条分支就是当前工作的分支。

master分支是我们创建本地仓库时系统默认创建的分支。

创建分支

git branch 查看当前所有分支

这个*表示HEAD指向的分支,也就是我们当前工作的分支

git branch name 创建一个新的分支

 我们发现新建的dev分支与master分支都指向最新的提交

切换分支

那么如何切换到dev分支下进行开发呢?

git checkout 分支名字

现在我们在这个分支下对文件进行修改,添加一句话“分支dev”

 添加并提交

现在我们切换回master分支,看看master分支有没有被影响。

没有受到任何影响,我们再来看他们的指向

发现指向已经不同了。

我们要想在master分支上看见dev上的提交怎么办呢?--->合并分支

合并分支

为了能在master分支上看见dev分支上的提交,我们需要将dev分支合并到master分支上。

git merge 分支名

需要注意的是,要将dev分支合并到master分支上,需要先切换到master分支上 。

Fast-forward模式,快进模式,合并时,master直接指向dev的当前提交

我们还可以来看看他的视图。

当然,也不是每次合并时都能使用快进模式,我们后面会说到其他的合并方式。

删除分支

在我们合并了dev分支后,dev分支也就没用了,所以我们删掉他

git branch -d 分支名字

我们已经完成了合并,所以此时删除分支时可以的。

合并冲突

在实际分支合并时,并不是每次都能合并成功的,有时候会遇到代码冲突的问题

我们创建一个新的分支并切换至该分支

git checkout -b 新的分支名字   一条指令一步到位

再切换至master分支做修改。

两个分支都对原有旧版本代码做了修改并提交,现在我们将newdev与master合并

这些符号之间的代码就是冲突的代码,我们只能手动去除冲突,保留一个

再次添加提交

我们此时的模式是--no -ff,也就是非快进模式

接着,我们删除分支

分支管理策略

通常我们合并分支时,如果可能,编译器通常会采用fast-forward模式,合并后结果是这样

master直接指向dev指向的最新提交。

但在合并冲突部分,我们也看到通过解决冲突问题,会在进行一次添加提交,得到的最终状态是:

这样的好处是,从分支历史上就可以看出分支信息。

我们已经删除了dev和newdev分支,但是我们仍然可以看到他们的过往信息,尽管我们删除了newdev分支,但是我们仍然可以看到现在的master分支是由其他分支合并而得到的。

编译器支持我们强制禁用fast-forward模式,那么在merge时会生成一个新的commit,这样我们就可以从分支历史上看出分支信息。、

我们再次新建一个分支测试--no -ff模式的合并

别忘了切换到master分支

所以在合并分支时,加上--no-ff参数就可以用扑通模式合并,合并后的历史有分支,能看出来做过合并,而fast-forward模式就看不出来曾经做过合并。

http://www.lryc.cn/news/237146.html

相关文章:

  • 《视觉SLAM十四讲》-- 建图
  • 智能配电箱柜管理系统
  • 聊聊近些年 CPU 在微架构、IO 速率上的演进过程
  • PS学习笔记——移动工具
  • 信息中心网络提出的背景、研究现状及研究内容
  • 【计算机视觉】24-Object Detection
  • 【mac 解决eclipse意外退出】
  • mysql innodb buffer pool缓冲池命中率和命中了哪些表?—— 筑梦之路
  • 牛掰的dd命令,cpi0配合find备份(不会主动备份),od查看
  • pip list 和 conda list的区别
  • 多目标应用:基于多目标灰狼优化算法MOGWO求解微电网多目标优化调度(MATLAB代码)
  • LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  • linux nas
  • 控制您的音乐、视频等媒体内容
  • xlua源码分析(三)C#访问lua的映射
  • 2023 极术通讯-汽车“新四化”路上,需要一片安全山海
  • Spring Boot接口设计规范
  • 美创科技与南京大数据安全技术有限公司达成战略合作
  • 2.4路由日志管理
  • 归并排序详解:递归实现+非递归实现(图文详解+代码)
  • DataBinding原理
  • docker更换国内源
  • 【咖啡品牌分析】Google Maps数据采集咖啡市场数据分析区域分析热度分布分析数据抓取瑞幸星巴克
  • 【Java】异常处理(一)
  • 【高级程序设计】Week2-4Week3-1 JavaScript
  • PHP笔记-->读取JSON数据以及获取读取到的JSON里边的数据
  • 【Spring Boot】如何集成Redis
  • Elasticsearch备份与还原:使用elasticdump
  • 给大伙讲个笑话:阿里云服务器开了安全组防火墙还是无法访问到服务
  • js:react使用zustand实现状态管理