【Git】分支管理-创建切换合并删除分支冲突

news2024/9/24 11:31:19

文章目录

  • 分支管理
    • 创建分支
    • 切换分支
    • 合并分支
    • 删除分支
    • 分支冲突

分支管理

在版本库当中有一个head指针,指向master分支。master存储的是最新一次提交的commit id(版本号) ==>对应的是版本库当中对象库的一个对象的索引

image-20230614204919841

在版本回退⾥,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀,目前为止:只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即master分⽀


再次理解HEAD

HEAD严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD指向的就是当前分⽀。每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越来越⻓,⽽HEAD只要⼀直指向master分⽀即可指向当前分⽀

image-20230614210548248

创建分支

查看当前本地所有的分支:git branch

  • 注意:如果想要查看远程分支,需要加上 -r 选项,但前提是要pull⼀下拉取最新的远端仓库,才能看到最新的内容

创建新分支:git branch 新分支名

image-20230614211022165

创建新的分⽀后,Git新建了⼀个指针叫dev*表示当前HEAD指向的分⽀是master分支。可以通过⽬录结构发现新的dev分支

image-20230614211131688

⽬前dev和master指向同⼀个修改,因为创建dev分支的时候,是基于最新的一次提交创建出来的,所以其指向最新的提交,并且也可以验证下HEAD⽬前是指向 master 的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TbLt8ci5-1690538256500)(https://mangoimage.oss-cn-guangzhou.aliyuncs.com/202306142112305.png)]

画图分析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lZE1NZsz-1690538256501)(https://mangoimage.oss-cn-guangzhou.aliyuncs.com/202306142112876.png)]

切换分支

切换分支:git checkout 分支名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0muZiYt-1690538256501)(https://mangoimage.oss-cn-guangzhou.aliyuncs.com/202306142115956.png)]

HEAD已经指向了dev分支,就表示我们已经成功的切换到了dev分支上

image-20230614211515077

HEAD可以指向其它分支,被HEAD指向的分支就是当前正在工作的分支

回忆:该命令也可以进行工作区的文件回退,前提是该文件已经add和commit。

git checkout -- 文件名:让⼯作区的对应文件回到最近⼀次add 或者 commit时的状态**


情形1:在dev分支做修改,master分支如何?

1°:在 dev 分⽀下修改ReadMe⽂件,新增⼀⾏内容,并进⾏⼀次提交操作

2°:回到master分支,此时并不能看到ReadMe新增的内容

3°:但是如果切到dev分支查看ReadMe文件,仍然可以看到新增的内容

原因就是两者指向的提交是不⼀样的

图解:由于是在dev分⽀上提交的,⽽master分⽀此刻的提交点并没有变,此时的状态如图如下所⽰

image-20230614211725217

当切换到master分⽀时,HEAD就指向了master,当然看不到提交了

补充:使用git branch -b 分支名:完成创建并切换分支的动作


合并分支

为了在master主分⽀上能看到新的提交,就需要将 dev 分⽀合并到 master 分⽀,合并后,master就能看到dev分⽀提交的内容了

git merge 分支名:合并指定分支到当前分支

image-20230614211828804

合并的时候:采取的是Fast-forward:快进模式,直接把master分支指向dev分支的当前提交,所以合并速度⾮常快。当然也不是每次合并都能Fast-forward


整体步骤:

image-20230614212725211


删除分支

删除分支命令:git branch -d 分支名

合并完成后,dev分⽀对于我们来说就没用了,那么dev分支就可以被删除掉,但是注意:如果当前正处于某一个分支,那么就不能删除当前所在的分支,但是可以在其它分支下删除当前分支

image-20230727171748073

此时的状态图如下:

image-20230727171753407

创建、合并和删除分支非常快,所以Git更建议我们使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全

分支冲突

在实际分⽀合并的时候,并不是想合并就能合并成功的,有时候可能会遇到代码冲突的问题。例如下述的情况:

步骤:

  • 1.创建⼀个新的分⽀dev,并切换⾄⽬标分⽀ =>可以使用git checkout -b 分支名 完成创建并切换的动作
  • 2.在dev分支下修改ReadMe文件,更改⽂件内容之后,并进⾏⼀次提交
  • 3.切换至master分支下观察ReadMe文件内容的变化,此时可以发现:⽂件内容还是⽼的版本,原因就是:此时master分支和dev分支,两者指向的提交是不⼀样的
  • 4.如果此时在master分支上对ReadMe⽂件再进⾏⼀次修改,并进⾏提交,那么此时master分支和dev分支都分别有新的提交,状态如下:
image-20230727172700237

在这种情况下:Git只能试图把各⾃的修改合并起来,但这种合并就可能会有冲突

发现ReadMe⽂件有冲突后,可以直接查看⽂件内容,Git会⽤<<<<<<<,=======,>>>>>>来标记出不同分⽀的冲突内容,此时我们必须要⼿动调整冲突代码,并需要再次提交修正后的结果!!然后就可以删除dev分支了

image-20230728095133556

查看分支的合并情况:git log --graph --pretty=oneline --abbrev-commit

此时的状态如下

image-20230727172907148

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/806512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL 基于Amoeba读写分离】

目录 一、读写分离是什么&#xff1f; 二、常见的MySQL读写分离方案 1.基于程序代码内部实现 2.基于中间代理层实现 3.Amoeba 三、分离步骤 1.在主机Amoeba上安装java环境 2.安装并配置Amoeba 3.配置Amoeba读写分离&#xff0c;两个Slave读负载均衡 4.测试 4.1 在Cl…

大数据Flink(五十三):Flink流处理特性、发展历史以及Flink的优势

文章目录 Flink流处理特性、发展历史以及Flink的优势 一、Flink流处理特性 二、发展历史

javascript数据类型详解

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 javascript 也可获取。 文章目录 数据类型数据类型的分类基本数据类型Number数字型进制数字型范围三个特殊值IsNaN () String字符串转义符字符串…

matplotlib绘图中可选标记

文章目录 简介所有可用的绘图标记绘图函数标记绘制 简介 前面的博客简要介绍了matplotlib中的绘图标记&#xff0c;并列举出了部分可用标记点的类型&#xff0c;并画了个图作为示例&#xff0c;如下图下表所示。本文则将所有标记点的类型均绘制一遍 字符类型字符类型字符类型…

C++ | 红黑树以及map与set的封装

目录 前言 一、红黑树 1、红黑树的基本概念 2、红黑树相关特性 3、红黑树结点的定义 4、红黑树的查找 5、红黑树的插入 6、二叉树的拷贝构造与析构 7、红黑树的检测 8、红黑树总结 二、map与set的封装 1、红黑树的结点 2、红黑树迭代器 3、set的封装 4、map的封…

error:0308010C:digital envelope routines::unsupported(Vue2报错)

原因:node.js版本过高&#xff0c; 解决方案&#xff0c;在终端输入以下命令 set NODE_OPTIONS--openssl-legacy-provider 然后再package.json里面添加一行 "dev_t": "set NODE_OPTIONS\"--openssl-legacy-provider\" & npm run dev\n" 然后…

又一个产业即将被中国超越,韩国急了,将提供1.2万亿支持

日前韩媒报道指韩国计划推出1.2万亿韩元的OLED面板产业资助计划&#xff0c;希望帮助韩国两大OLED面板企业三星和LGD巩固OLED面板的技术领先优势&#xff0c;主要是因为它们正面临中国面板厂商的狙击&#xff0c;即将被超越。 据悉韩国推出的1.2万亿韩元资助计划&#xff0c;其…

在EF Core中为数据表按列加密存储

假设有User表 public class User : Entity<int> {public int Id { get; set; }public string UserName { get; set; }public string Name { get; set; }public string IdentificationNumber { get; set; } }其中有身份证号码IdentificationNumber列&#xff0c;需要加密…

计算机网络知识点汇总(持续更新)

文章目录 第一章 概述1.1 计算机网络在信息时代的作用信息服务基础设施我国互联网发展状况 1.2 因特网概述网络、互联网、因特网的基本概述因特网发展的三个阶段因特网的标准化工作 1.3 三种交换方式电路交换分组交换报文交换 1.4 计算机网络的定义和分类定义分类按交换技术按使…

【雕爷学编程】Arduino动手做(175)---机智云ESP8266开发板模块4

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

互联网广告投放算法是怎么回事?这本书给你答案

目录 内容简介 作者简介 读者对象 书本目录 文末自购链接 广告平台的建设和完善是一项长期工程。例如&#xff0c;谷歌早于2003年通过收购Applied Semantics开展Google AdSense 项目&#xff0c;而直到20年后的今天&#xff0c;谷歌展示广告平台仍在持续创新和提升。广告平…

QT编写的串口助手

QT编写的串口助手 提前的知识 创建UI界面工程 找帮助文档 添加串口的宏

list与erase()

运行代码&#xff1a; //list与erase() #include"std_lib_facilities.h" //声明Item类 struct Item {string name;int iid;double value;Item():name(" "),iid(0),value(0.0){}Item(string ss,int ii,double vv):name(ss),iid(ii),value(vv){}friend istr…

2023-07-11——华中科技大计算机组成原理

windows下用nginx配置https服务器 1.安装nginx 先到nginx官网下在nginx http://nginx.org/en/download.html 将下载好的文件解压出来修改文件名为 nginx ,然后拷贝到C盘下&#xff0c;目录如下&#xff1a; 运行 nginx start nginx 验证 在浏览器中输入 localhost 访问即可&a…

随笔:信息系统项目管理师(软考高级2023)考试指南

1、软考的级别设置 1、全国计算机软件资格考试设三个级别层次&#xff0c;五个专业&#xff0c;共有27种岗位资格考试 2、除了初级信息处理技术员为上机考试&#xff0c;其他均为笔试 3、信息系统项目管理师、系统规划与管理师、系统集成项目管理工程师考试形式相对考验记忆…

ObjectArx 设置填充透明度问题

初始化透明度参数AcCmTransparency对象时,需要调用setAlpha设置透明度值,这里传入的值是0255,但cad特性面板上显示的是090,且经过测试发现,传入值与特性面板显示的值也是不同的,比如传入90,显示64,百度搜索了个寂寞,最后还是在谷歌找到了答案,原来设置的值和特性面板…

【Rasa】入门案例学习

Rasa初体验--构建对话机器人 NLU数据 version: "3.1"nlu:- intent: greetexamples: |- Hi- Hey!- Hello- Good day- Good morning- intent: subscribeexamples: |- I want to get the newsletter- Can you send me the newsletter?- Can you sign me up for the ne…

寄存器分配:图着色算法

寄存器分配&#xff1a;图着色算法 背景活跃分析寄存器冲突图图着色算法溢出 背景 在编译器的中间表示中&#xff0c;一般会设定虚拟寄存器有无限多个&#xff08;方便优化&#xff09;&#xff0c;而真实的物理寄存器是有限的&#xff0c;因而编译器后端在将中间表示翻译成目…

初步了解C++模板

一、函数模板 如果我们要写一个交换两个变量值的函数Swap&#xff0c;那么我们得对每一种类型都写一个&#xff0c;以便适用不同类型的参数&#xff0c;但是有了模板之后&#xff0c;可以简化操作 template<class T> void Swap(T& x, T& y) {T tmp x;x y;y …

百题千解计划【CSDN每日一练】订班服(附解析+多种实现方法:Python、Java、C、C++、C#、Go、JavaScript)

如果决意去做一件事了,就不要再问自己和别人值不值得,心甘情愿才能理所当然,理所当然才会义无反顾。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专…