Git―分支管理

devtools/2025/2/12 1:57:55/
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/devtools/158079.html

相关文章

Spring框架学习大纲

Spring框架学习大纲 一、Spring基础入门 Spring概述 Spring框架发展历史与核心优势Spring核心模块组成&#xff08;IoC、AOP、Data Access、Web MVC等&#xff09;Spring与传统Java EE开发对比 控制反转&#xff08;IoC&#xff09;与依赖注入&#xff08;DI&#xff09; IoC…

贪心算法_翻硬币

蓝桥账户中心 依次遍历 不符合条件就反转 题目要干嘛 你就干嘛 #include <bits/stdc.h>#define endl \n using namespace std;int main() {ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); string s; cin >> s;string t; cin >> t;int ret 0;for ( i…

Android双屏异显Presentation接口使用说明

在点餐、收银、KTV等场景,对于双屏异显的需求是非常多的,首先可以节省硬件成本。而现在的智能板卡很多运行Android系统,从Android4.2开始支持WiFi Display(Miracast)功能后,就开始支持双屏异显Presentation这套应用层接口了,下面以Android5.1系统来说明这套接口的使用要…

安卓开发用Java、Flutter、Kotlin的区别

在安卓开发中&#xff0c;Java、Kotlin 和 Flutter 是三种常见的技术选择&#xff0c;各有优缺点。以下是它们的区别&#xff1a; 1. Java 历史&#xff1a;Java 是安卓开发的传统语言&#xff0c;自安卓平台推出以来一直作为主要开发语言。成熟度&#xff1a;拥有丰富的库和…

基于 Linux 与 CloudFlare 的智能实时 CC/DDoS 防御方案

随着互联网的快速发展,网络安全问题日益严峻,尤其是 CC(Challenge Collapsar)攻击 和 DDoS(分布式拒绝服务)攻击 对网站和服务的威胁越来越大。为了应对这些攻击,许多企业和开发者选择使用 CloudFlare 作为防御工具。CloudFlare 提供了强大的 WAF(Web Application Fire…

C++设计模式 - 模板模式

一&#xff1a;概述 模板方法&#xff08;Template Method&#xff09;是一种行为型设计模式。它定义了一个算法的基本框架&#xff0c;并且可能是《设计模式&#xff1a;可复用面向对象软件的基础》一书中最常用的设计模式之一。 模板方法的核心思想很容易理解。我们需要定义一…

Maven Profile 配置:支持不同环境的构建

1. 什么是 Maven Profile&#xff1f; Maven Profile 是 Maven 提供的一种环境配置管理机制&#xff0c;可以根据不同的环境&#xff08;如开发环境、测试环境、生产环境&#xff09;定义不同的构建配置。 使用场景&#xff1a; 多环境配置&#xff1a;如 dev&#xff08;开…

Vue3 特点

不强制要求组件有根节点 // vue2 <template><div><h1>标题</h1><p>内容</p></div> </template>// vue3 <template><h1>标题</h1><p>内容</p> </template> 注意事项 虽然 Vue 3 不再强制…