Git―分支管理

ops/2025/2/11 0:39:36/
github-gist">

Git

  • ⛅创建&切换&合并分支
  • ⛅删除分支
  • ⛅合并冲突
  • ⛅合并模式
  • ⛅Bug 分支
  • ⛅强制删除分支

master → 主分支

# 查看本地所有分支
git branch

在这里插入图片描述
分支前面的*, 代表当前所在的分支

图中当前所在的分支为master

⛅创建&切换&合并分支

# 创建分支
git branch "branchname"
# 切换分支
git checkout "branchname"
# 合并分支
git merge "branchname"
# 创建&切换分支
git checkout -b "branchname"

在这里插入图片描述

新创建的分支(dev)默认会指向当前所在的分支(master)的最新提交

在这里插入图片描述
在这里插入图片描述

  • 合并分支
    • HEAD指向dev分支(切换分支到dev)
    • dev分支下执行修改操作, 然后add&commit该内容(此时切换到master分支并不会看到dev分支提交的内容)
    • HEAD指向master分支(切换分支到master)
    • git merge dev → 将dev分支的内容合并到master分支

⛅删除分支

# 删除分支
git branch -d "branchname"

注意

不能在当前分支删除当前分支

在这里插入图片描述
创建&合并&删除分支非常快, 因此Git鼓励使用分支完成某个任务, 合并后再删掉分支. 这和直接在master分支上工作效果是⼀样的, 但过程更安全

⛅合并冲突


master 分支下存在一个 ReadMe 文件, 内容如图

在这里插入图片描述

创建&切换分支到dev1(git checkout -b dev1)

在这里插入图片描述

修改 ReadMe 中的内容

在这里插入图片描述

dev1分支下对 ReadMe 执行add&commit

切换分支到master(git checkout master)

在这里插入图片描述
修改 ReadMe 中的内容

在这里插入图片描述

master分支下对 ReadMe 执行add&commit

合并分支(git merge dev1) → 合并冲突

在这里插入图片描述

查看 ReadMe 中的内容

在这里插入图片描述

<<<<<<< HEAD=======
这之间的内容表示当前分支的内容
=======>>>>>>> dev1
这之间的内容表示 dev1 分支的内容

对于冲突的部分, 需要我们自行选择进行保存 → 保存后需要执行add&commit

git log --graph --abbrev-commit → 查看合并过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

⛅合并模式


合并分支时, 如果可能, Git 会采用Fast-forward模式

在这里插入图片描述

合并结果如图

在这里插入图片描述

Fast forward模式下, 删除分支后, 查看分支历史时, 会丢掉分支信息, 无法确定最新提交的内容是merge进来的还是正常提交的

但在合并冲突部分, 通过解决冲突问题, 会再进行一次新的提交
这种模式就不属于Fast forward模式 → no-ff(非Fast forward模式)

在这里插入图片描述

在这里插入图片描述

这样就能够从分支历史上查看分支信息 → 能够确定最新提交的内容是merge进来的还是正常提交的

Git 支持我们强制禁用Fast forward模式, 即在merge时生成一个新的commit

# 合并 dev2 分支提交的内容到当前分支(采用 no-ff 模式)
[root@VM-8-11-centos gitcode]# git merge --no-ff -m "merge with no-ff" dev2
Merge made by the 'recursive' strategy.ReadMe | 1 +1 file changed, 1 insertion(+)

在这里插入图片描述

⛅Bug 分支

⛅强制删除分支


在这里插入图片描述

产品经理要求开发一个新的功能

此时开发人员就会从当前内容下创建一个新的分支来开发新的功能

在这里插入图片描述

做到一半时, 产品经理说这个功能被取消了

于是开发人员只能将当前创建的分支进行删除

但是对于这种已提交(commit)但没有进行合并(merge)的分支, 不能使用git branch -d "branchname" 命令进行删除

使用git branch -D "branchname"进行强制删除

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/ops/157397.html

相关文章

STM32 CUBE Can调试

STM32 CUBE Can调试 1、CAN配置2、时钟配置3、手动添加4、回调函数5、启动函数和发送函数6、使用方法(采用消息队列来做缓存)7、数据不多在发送函数中获取空邮箱发送&#xff0c;否则循环等待空邮箱 1、CAN配置 2、时钟配置 3、手动添加 需要注意的是STM32CUBE配置的代码需要再…

Android修行手册-五种比较图片相似或相同

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材…

一周发生AI事件总结(02.08)

本周人工智能领域发生的所有事件&#xff1a; Ilya Sutskever的初创公司正洽谈以约200亿美元估值进行融资&#xff1a;据路透社报道&#xff0c;由前OpenAI首席科学家Ilya Sutskever创立的人工智能初创公司Safe Superintelligence正洽谈以“至少”200亿美元的估值进行融资。该…

pytorch torch.linalg模块介绍

torch.linalg 是 PyTorch 的 线性代数 (Linear Algebra) 子模块&#xff0c;它提供了许多 高效的矩阵操作和分解方法&#xff0c;类似于 NumPy 的 numpy.linalg 或 SciPy 的 scipy.linalg&#xff0c;但针对 GPU 加速和自动微分 进行了优化。 1. 矩阵基本运算 矩阵乘法 torc…

后台管理系统网页开发

CSS样式代码 /* 后台管理系统样式文件 */ #container{ width:100%; height:100%; /* background-color:antiquewhite;*/ display:flex;} /* 左侧导航区域:宽度300px*/ .left{ width:300px; height: 100%; background-color:#203453; display:flex; flex-direction:column; jus…

活动预告 | 为 AI 新纪元做好准备:助力安全的业务转型

课程介绍 随着现代办公模式的不断演变和 AI 技术的迅速发展&#xff0c;企业在享受效率提升的同时&#xff0c;也面临着信息安全与数据保护的严峻挑战。在利用 AI 技术释放业务潜力的同时&#xff0c;如何确保数据质量与安全已成为企业发展的关键议题。 在本次线上课程中&…

如何在 Java 应用中实现数据库的主从复制(读写分离)?请简要描述架构和关键代码实现?

在Java应用中实现数据库主从复制&#xff08;读写分离&#xff09; 一、架构描述 &#xff08;一&#xff09;整体架构 主库&#xff08;Master&#xff09; 负责处理所有的写操作&#xff08;INSERT、UPDATE、DELETE等&#xff09;。它是数据的源头&#xff0c;所有的数据变…

基于Flask的当当网畅销图书榜单可视化分析系统的设计与实现

【FLask】基于Flask的当当网畅销图书榜单可视化分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统系统采用Python语言结合Flask框架开发&#xff0c;利用Pandas、NumP…