【Git】分支管理

文章目录

    • 一、理解分支
    • 二、创建、切换、合并分支
    • 三、删除分支
    • 四、合并冲突
    • 五、合并模式
    • 六、分支策略
    • 七、bug分支
    • 八、强制删除分支


努力经营当下 直至未来明朗!

一、理解分支

  1. HEAD指向的是master分支,master中指向的是最新一次的提交,也就是master中存储得到最新一次提价的commit_id。

  2. 在gitcode仓库底下,cat .git/refs/heads/master就可以打印出master中的内容,即最新一次提交的commit_id。
    git cat-file -p [commit_id] 就可以打印出该commit_id的相关信息
    0

  3. master主分支:其实就相当于是每次提交的结果锁串成的线。
    1


二、创建、切换、合并分支

  1. 查看当前本地仓库有哪些分支:git branch
  2. HEAD其实是可以指向其他分支的,被指向的分支就是当前正在工作的分支。
  • master就说明当前工作的分支就是master
    1
  1. 创建本地分支:git branch [分支名]
    2

  2. 新建的分支是指向创建该分支的时候所站的版本上的,即该版本的commit_id
    3

  3. 切换分支,重新设置当前的工作分支,即HEAD指向新的分支
    git checkout [分支名]
    5

  4. 在dev分支上提交的内容在master分支上找不到,因为master和dev分支都是指向在各自分支上的最新提交
    6

  5. 合并分支:首先看目前在哪个分支上git branch -> 切换到想要合并到的分支上git checkout [分支名] -> 合并分支git merge [被合并的分支] -> 此时该分支就指向了被合并分支的最新一次提交
    (fast-forward是快速模式)
    7


三、删除分支

  1. 在合并了分支之后,被合并的分支就可以被删除了
    git branch -d [要删除的分支]
    8

  2. 注意:只能在其他分支上删除该分支,本分支上不能删除本分支。
    9

  3. 因为创建、合并和删除分支非常快,所以Git鼓励使用分支完成某个任务,合并后再删除分支,这和直接在master分支上工作的效果是一样的,但是过程更安全。


四、合并冲突

  1. 在merge合并分支的时候是可能出现冲突的。

  2. 如果相对分支A上的某个文件file中的内容进行升级,此时就需要重新创建一个分支B对文件file中的内容进行修改,而与此同时分支A也对文件file中的内容进行了修改;而分支B最后是要合并到分支A上的,此时就会出现合并冲突问题。

  3. 创建一个分支并将当前分支切换到新分支上 git checkout -b [新分支]

  4. git add . 将当前目录下的所有修改提交到暂存区

  5. 不同分支对同一个文件修改之后进行分支的合并,此时就会出现合并冲突
    10
    11

  6. vim [文件名] 可以进入文件查看冲突内容,其中 <<< >>>中的内容即是冲突内容。
    12

  7. 想要保留的是什么内容是由开发人员决定的,所以开发人员就要进行手动修改文件内容并进行保存,然后重新进行add和commit,此时保存的就是解冲突之后的结果。
    13

  8. 解完冲突并合并分支,master存储的是最新一次的提交,即接完冲突之后的提交
    15

  9. git log 搭配参数的使用
    git log --graph --abbrev-commit 将提交commit进行图视化
    16


五、合并模式

  1. fast forward模式(ff模式)进行合并分支,使用该种模式合并分支的时候,master会指向最新合并的分支指向的commit_id,也就分不清该次提交是merge还是正常commit来的。
    17
    18

  2. no-ff模式:可以更加方便地追溯到此次的提交的是merge进来的还是正常commit,方便追溯到对应的人。(推荐使用
    git merge --no-ff -m "描述信息" [被合并的分支名]
    19


六、分支策略

master分支是稳定的,一般用于存储线上环境的代码。
20


七、bug分支

  1. 当线上环境(即master主分支)上出现bug的时候,不要直接在master主分支上进行修改,而是在本地专门创建一个修复master分支上bug的分支,然后测试团队测试之后再将该代码分支合并到master主分支上。
  2. 不能在master主分支上直接进行bug修复的原因:可能改出更大的bug,对线上环境影响较大。
  3. 模拟环境:开发在dev2分支上开发了部分代码,但是还未提交,此时master主分支上出现了bug。此时需要新建一个专门的修复bug的分支来修复bug,则首先切到master分支上来新建一个修复bug的分支。
    1)dev2分支上修改的代码在master分支的工作区中出现,即影响了master分支。
    21
    2)不想影响master分支,此时将当前分支切换到dev2分支上,并将工作区中的内容进行储存操作git stash -> 可以使用tree .git/进行查看,发现多了refs/stash来存储工作区中的内容 -> 此时工作区中就是干净的
    22
    23

3)stash中存储的是已经被git追踪管理的内容。因为file3并没有提交到git中被git追踪管理,所以是不能在stash中进行存储的,即git stash命令不可用。
25

4)此时就切换到master分支上新建一个修复bug的分支 -> 并对有bug的文件进行修改,修改完成之后提交到该分支上 -> 切换到master主分支上并将修复分支上的代码合并到master主分支上
26

5)dev2分支还没有开发完成,此时就需要切换回dev2分支继续进行开发,但是cat 该文件之后发现该文件中之前开发了部分的代码不见了,这些内容已经被放到了stash中进行存储 -> 此时就需要将stash中的内容恢复到该dev2分支的该文件中进行继续开发
git stash list 可以查看当前stash中存储的内容
git stash pop 可以将stash中存储的内容恢复到该分支的文件中
27
6)此时就可以继续对dev2分支进行开发,开发完成之后就可以对代码进行提交,但是此时的状态如下,直接将dev2分支合并到master分支上可能会存在冲突
28
7)为了避免将dev2分支合并到master主分支之后影响master住分支,就将master主分支合并到dev2分支上,这样合并后即使有问题也可以在本地分支dev2上进行多次修改测试,不会影响master主分支中的代码 -> 将问题在dev2分支上解决完之后再将代码合并到master主分支上
29
30

8)修复并合并完分支之后就可以将该修复分支进行删除了
git branch -d [分支名]


八、强制删除分支

  1. 在分支A已经被merge了之后想要删除分支A:git branch -d [分支A]
  2. 若分支B还没有被merge过,此时直接该分支B是受保护的,不能直接使用git branch -d [分支B]进行删除。
  3. 如果想要删除还没有被合并的分支每次是就需要强心进行删除,即git branch -D [分支名],但是注意:不能在当前分支上删除当前分支,必须要进行分支的切换!!!
    31

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

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

相关文章

Visual Studio 2019源码编译cpu版本onnxruntime

1.下载onnxruntime源码 源码地址&#xff1a;gitee 》https://gitee.com/mirrors/onnx-runtime github 》https://github.com/microsoft/onnxruntime git clone --recursive https://gitee.com/mirrors/onnx-runtime 2.安装anaconda并配置python环境 安装anaconda时记得勾选默…

CSS基础 知识点总结

一.CSS简介 1.1 CSS简介 ① CSS指的是层叠样式表&#xff0c;用来控制网页外观的一门技术 ② CSS发展至今&#xff0c;经历过CSS1.0 CSS2.0 CSS2.1 CSS3.0这几个版本&#xff0c;CSS3.0是CSS最新版本 1.2 CSS引入方式 ① 在一个页面引入CSS&#xff0c;共有三种方式 外部…

Ansible 进阶

Ansible 进阶 ⤴️Ansible 入门看这篇文章⤵️Ansible 实战看这篇文章 一.Ansible 中的 Playbook 1.1 Playbook 介绍 如下图&#xff0c;ansible 在整个管理过程中使用 playbook 的大体流程。 Playbook 中包含多个 role&#xff0c;每个 role 对应于在远程主机完成某个比较复…

2.创建小程序

创建 在开发工具中,选择小程序,点击加号 填写小程序信息,模板使用的是TS+Sass 编辑器的工作区 目录结构 项目使用的是ts的模板,目录结构和js的有一点差异,目录结构如下: miniprogram:小程序根目录 —pages:小程序页面目录 ——xxx:页面目录,一个页面对应一个目…

水果成篮(力扣)双指针滑动窗口 JAVA

你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xff0c;你必须按照要求采摘水果&…

华为手机Outlook手机APP无法登录邮箱,提示[2002]错误代码

近期遇到不少华为手机的Outlook APP无法登录邮箱Office365邮箱的案例&#xff0c;并且提示&#xff1a; 错误 出错了。[2002] 经测试&#xff0c;这应该是华为应用市场下载的Outlook版本有问题。 解决方法&#xff1a; 把Outlook卸载之后从微软官网重新下载官网版本去安装&am…

Creating a document in Overleaf

1、Uploading a project上传项目 This artcle provides a step-by-step guide showing how to create an Overleaf project by uploading a .zip file containing LaTeX files stored on your local computer 1、Create a .zip file containing your local files (images, bib…

redux的介绍、安装、三大核心与执行流程

redux的介绍、安装、三大核心与执行流程 一、redux的基本介绍二、redux的安装三、redux核心概念3.1 action3.2 reducer3.3 store 四、Redux代码执行流程五、加减案例练习 一、redux的基本介绍 redux中文官网Redux 是 React 中最常用的状态管理工具&#xff08;状态容器&#x…

基于深度学习创建-表情符号--附源码

表情符号深度学习概述 如今,我们使用多种表情符号或头像来表达我们的心情或感受。它们充当人类的非语言线索。它们成为情感识别、在线聊天、品牌情感、产品评论等的关键部分。针对表情符号驱动的故事讲述的数据科学研究不断增加。 从图像中检测人类情绪非常流行,这可能是由…

【数据结构】 单链表面试题讲解

文章目录 引言反转单链表题目描述示例&#xff1a;题解思路代码实现&#xff1a; 移除链表元素题目描述&#xff1a;示例思路解析&#xff1a; 链表的中间结点题目描述&#xff1a;示例&#xff1a;思路解析代码实现如下&#xff1a; 链表中倒数第k个结点题目描述示例思路解析&…

腾讯大佬用了8小时讲完的Python,整整315集,拿走不谢!

Python在近几年越来越受追捧&#xff0c;很多童鞋或者职场小伙伴想要提升技能-学习Python。 这是非常好的事情&#xff0c;但问题在于很多人不知道学Python做什么&#xff0c;所以什么零碎细末、艰难晦涩、长篇大论的都去看&#xff0c;很容易陷入学不下去的困境。必须要有针对…

小程序-uni-app:hbuildx uni-app 安装 uni-icons 及使用

一、官方文档找到uni-icons uni-app官网 二、下载插件 三、点击“打开HBuildX” 四、选择要安装的项目 五、勾选要安装的插件 六、安装后&#xff0c;项目插件目录 根目录uni_modules目录下增加uni-icons、uni-scss 七、引入组件&#xff0c;使用组件 <uni-icons type&qu…

十、Linux的root用户、用户和用户组的问题

目录 1、Linux的root用户 &#xff08;1&#xff09;基础 &#xff08;2&#xff09;如何进入root模式 &#xff08;3&#xff09;如何给普通用户配置root权限&#xff1f; 注意点&#xff1a; 配置方法&#xff1a; 2、用户/用户组问题 &#xff08;1&#xff09;用户/用…

pdf怎么合并在一起?这几个合并方法了解一下

pdf怎么合并在一起&#xff1f;在日常工作、学习和生活中&#xff0c;我们常常会遇到需要将多个PDF文件合并成一个文件的情况。比如&#xff0c;在学术论文写作中&#xff0c;我们可能需要将多篇论文合并成一个文件进行打印和提交。在工作中&#xff0c;我们可能需要将多个报告…

深入竞品:解读竞品分析的艺术与策略

引言&#xff1a;为何竞品分析至关重要&#xff1f; 在当今的产品环境中&#xff0c;市场变得越来越拥挤。每个角落都有新的创业公司试图创造下一个行业的颠覆者&#xff0c;同时也有成熟的巨头在不断地迭代和优化他们的产品。在这样的环境中&#xff0c;不了解您的竞争对手是…

学习笔记十七:node节点选择器,亲和性

node节点选择器&#xff0c;污点、容忍度、亲和性 node节点选择器nodeName&#xff0c;指定pod节点运行在哪个具体node上nodeSelector&#xff1a;指定pod调度到具有哪些标签的node节点上 亲和性node节点亲和性使用requiredDuringSchedulingIgnoredDuringExecution硬亲和性使用…

Intellij中直接运行ts配置:run configuration for typescript

在Intellij中可以借助插件run configuration for typescript直接运行typescript&#xff1a; run configuration for typescript插件本质还是依赖于 ts-node 来运行&#xff0c;只是其可以帮助我们自动配置好 ts-node 运行参数&#xff0c;简化使用。 第一步&#xff1a;安装…

Linux Mint 21.3 计划于 2023 年圣诞节发布

导读Linux Mint 项目近日公布了基于 Ubuntu 的 Linux Mint 发行版下一个重要版本的一些初步细节&#xff0c;以及备受期待的基于 Debian 的 LMDE 6&#xff08;Linux Mint Debian Edition&#xff09;版本。 近日&#xff0c;Linux Mint 项目负责人克莱门特-勒菲弗&#xff08;…

【STM32 学习】电源解析(VCC、VDD、VREF+、VBAT)

VCC电源电压GND电源供电负电压&#xff08;通常接地&#xff09;VDD模块工作正电压VSS模块工作负电压VREFADC参考正电压VREF-ADC参考负电压VBAT电池或其他电源供电VDDA模拟供电正电压VSSA模拟供电负电压 一、VCC&#xff08;供电电压&#xff09; VCC是指芯片的电源电压&#…

快解析内网穿透便捷访问内网私有云

快解析内网穿透软件的首要优势在于其不改变企业现有IT架构的特点。传统的内网穿透解决方案常常需要对企业网络进行重构&#xff0c;这不仅增加了工作量&#xff0c;还可能带来不稳定的因素。而快解析则巧妙地绕过了这一问题&#xff0c;让您能够在保持原有网络设备和配置的前提…