Git | 分支管理

Git | 分支管理

文章目录

  • Git | 分支管理
    • 1、理解分支
    • 2、创建分支&&切换分支
    • 3、合并分支
    • 4、删除分支
    • 5、合并冲突
    • 6、分支管理策略
      • 合并分支模式
      • 实际工作中分支策略
      • bug分支
      • 删除临时分支

1、理解分支

分支就类似分身。

  1. 在版本回退中,每次提交Git都会将修改以git对象的形式串联成一条时间线/分支。

  2. 只有一条默认的时间线,这个分支就叫master分支

  3. HEAD并不严格指向提交,而是指向分支,如果当前的分支是master,那么就会有下边的情况在这里插入图片描述

  4. 每次提交master都会向前移动

2、创建分支&&切换分支

  1. 查看当前本地分支:git branch

    HEAD指针指向:master

  2. 新建分支dev:git branch dev

  3. 查看当前分支:git branch

  4. 切换到master分支:git checkout dev

    HEAD指针指向:dev
    在这里插入图片描述

3、合并分支

比如dev分支中ReadMe后边追加了一行,i am coding,之后想要合并到Master上。

说明:为了避免合并冲突,一般会先提交,之后将master分支合并到dev上边,看是否有冲突,有则解决,无则继续操作。

4、删除分支

合并完成后dev分支没用就可以被删除掉。

如果想要删除,我们需要在其他分支上,如master分支

  1. 查看当前分支:git branch
  2. 切换到Master分支:git checkout master
  3. 删除分支:git branch -D dev
  4. 再次查看分支,发现已被删除:git branch
    在这里插入图片描述

5、合并冲突

在实际分支合并的时候,可能存在代码冲突的问题。

例如,现在master分支和dev分支分别对ReadMe文件进行修改并提交,dev分支在原文本后边添加i am coding,master 在文本后边添加finish并且分别add和commit,再尝试将dev分支合并至master分支时就会出现合并冲突的情况:

  1. dev分支下修改并提交:在这里插入图片描述

  2. 切换至master分支下修改并提交:在这里插入图片描述

  3. 在Master分支下合并dev分支:可以看到冲突在ReadMe文件在这里插入图片描述

  4. 我们查看ReadMe文件在这里插入图片描述

    其中<<<到===之间就是当前分支上的代码,后边的是dev分支上的代码,冲突的都在这里。

    我们需要手动决定到底要怎么决定

  5. 假设我们保留i am coding,把其他不需要的删除,还需要add和commit操作在这里插入图片描述

    此时master分支是最新的提交,dev还是原来的

可以看一下日志:

git log --graph --pretty=oneline --abbrev-commit 在这里插入图片描述

也可以证明我们刚刚的提交是merge的提交

另外合并完成之后,dev分支不使用了就可以删除:(删除dev分支就需要让HEAD指针指向别的分支)

在这里插入图片描述

6、分支管理策略

合并分支模式

合并分支模式有两种

  1. Fast forward模式 :merge默认情况,这次模式下,我们删除分支,查看分支历史时,就会丢掉分支信息,不知道最新提交是merge进来的还是正常提交的
  2. –no-ff方式:即强制禁用Fast forward模式。使用时注意要让master指向新的提交即使dev分支已经删除,也可以看到当前的提交是merge进来的还是由其他分支合并得到的

例如:

  1. 创建dev2分支,修改ReadMe,commit一次,切换至master分支,合并在这里插入图片描述

  2. 查看日志在这里插入图片描述

  3. 删除dev2分支再次查看日志在这里插入图片描述

    会发现使用禁用ff模式,仍然能看得到怎么来的

分支合并建议:

最好先在自己分支下合并master,有冲突在dev分支解决掉,再去master分支下进行merge【bug分支演示】

注意:合并完之后要进行一次提交

实际工作中分支策略

在这里插入图片描述

bug分支

master分支上有bug时,解决bug的流程:在git中,每个bug都可以通过一个新的临时分支来修复,修复完成之后合并分支,并将临时分支删除。

如果我们正在dev2分支上开发了部分代码,但是还没有提交,遇到bug怎么解决?

不要使用dev进行修理bug,否则就违背了dev分支初衷。

  1. 准备工作:创建dev2分支,并进行修改但不add和commit,切换到master在这里插入图片描述

  2. 如果不想看到,同时防止影响之后bug分支的修复,可以使用git stash命令将它暂时隐藏:在这里插入图片描述
    在这里插入图片描述

    会发现多了stash【只存储已经被git追踪管理的文件】

    再次查看状态,发现不再受原来dev2分支影响在这里插入图片描述

  3. 修复bug在这里插入图片描述

  4. 合并到master上在这里插入图片描述

  5. 切回dev2分支,恢复工作区,再次查看工作区内容:在这里插入图片描述

  6. 开发完dev2,提交后,在dev2分支合并master分支,并解决冲突在这里插入图片描述

  7. 切换到master分支上,进行merge在这里插入图片描述

\解决带有修复bug冲突的文件时,把当前的最好放在解决bug之后

删除临时分支

git branch -d dev2

强制删除:git branch -D dev2

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【记录】Pandoc|Linux安装最新Pandoc

参考&#xff1a;官方文档&#xff0c;https://pandoc.org/installing.html 系统&#xff1a;Ubuntu 注意&#xff01;Pandoc 不能接受 PDF 作为输入&#xff01;&#xff01;&#xff01;如果是想下载 Pandoc 做 PDF 格式转换请放弃&#xff01;&#xff01; Linux 是 amd64 版…

使用PlantUML绘制活动图、泳道图

最近在学PlantUML 太漂亮了 给大家欣赏一下 我也记录一下 startuml |使用前| start :用户打开旅游App; |#LightSkyBlue|使用后| :用户浏览旅游信息; |#AntiqueWhite|登机前| :用户办理登机手续; :系统生成登机牌; |使用前| :用户到达机场; |登机前| :用户通过安检; |#Light…

14.接口自动化测试-造数据

1.测试造数据 工作场景&#xff1a; 需要造一批测试数据 解决方案&#xff1a; &#xff08;1&#xff09;使用字符串拼接 135XXXXX &#xff08;2&#xff09;使用第三方库去做 faker 安装&#xff1a; pip install Faker 若安装不成功&#xff0c;可能是需要清下缓存&a…

【R语言简介】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

VScode配置MySQL

1、进入官网&#xff0c;下载MySQL 地址&#xff1a;dev.mysql.com/downloads/mysql/ ZIP方式下载&#xff0c;选择本地的路径进行解压。 2、配置环境变量 形如下方的路径&#xff1a; D:\software\Mysql\mysql-8.3.0-winx64\bin 即是解压位置后文件夹下的bin文件路径 3、初…

Manim - Python 绘画引擎

文章目录 关于 Manim安装manim 有两个版本要求直接使用 pip使用源码安装 使用 manimManual 关于 Manim Manim : Mathematical Animation&#xff0c;是由 Grant Sanderson 开发&#xff0c;是一个用于精确编程动画的引擎&#xff0c;专为创建解释性数学视频而设计。 github :…

.netcore+vue新生分班系统的设计与实现

.netcore vue新生分班系统的设计与实现说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于.net core架构和mysql数据库vue 东北石油大学新生分班系统的设计与实现 功能模块&#xff1a; 登录 注册学生 忘记密码 系统首顶 个…

Golang | Leetcode Golang题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; func isMatch(s string, p string) bool {for len(s) > 0 && len(p) > 0 && p[len(p)-1] ! * {if charMatch(s[len(s)-1], p[len(p)-1]) {s s[:len(s)-1]p p[:len(p)-1]} else {return false}}if len(p) 0 {retur…

web前端学习笔记1

前端学习笔记 1. 走进HTML 1.1 什么是HTML 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。HTML文档的后缀名 .html.htm以上两种后缀名没有区别…

YOLOv5改进 | Conv篇 | 利用CVPR2024-DynamicConv提出的GhostModule改进C3(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制&#xff0c;这个论文中介绍了一个名为ParameterNet的新型设计原则&#xff0c;它旨在在大规模视觉预训练模型中增加参数数量&#xff0c;同时尽量不增加浮点运算&#x…

基于 Spring Boot 博客系统开发(二)

基于 Spring Boot 博客系统开发&#xff08;二&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;一&#xff09;&#x1f4…

Redis入门到通关之Redis数据结构-List篇

文章目录 ☃️概述☃️数据结构☃️源码☃️其他 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端…