Git 基础使用(2) 分支管理

news2024/12/23 20:31:18

文章目录

  • 分支概念
  • 分支使用
    • 查看分支
    • 分支创建
    • 分支切换
    • 分支合并
    • 合并冲突
    • 分支删除
  • 分支管理
    • 快进模式
    • 分支策略
    • 内容保存
    • 错误处理

分支概念

(1)分支概念
Git分支是指在版本控制系统Git中,用来表示项目的不同工作流程或开发路径的一个重要概念。通过创建分支,可以在不影响主线代码的情况下进行独立的工作或实验。在Git中,每个项目都有一个默认的主分支,通常称为master或main分支。除了主分支外,用户可以根据需要创建任意数量的其他分支。这些分支可以基于主分支创建,也可以基于其他分支创建。分支的主要作用是允许团队成员在不互相干扰的情况下并行开发不同的功能或修复bug。每个分支都是独立的代码空间,允许开发人员自由地提交、合并和回滚更改,而不会影响其他分支或主线代码。

在这里插入图片描述
(二) HEAD 含义:

Git 基础使用(1)中提到,HEAD是.git文件夹中的一个重要文件。
Git 中的 HEAD 是一个指针,指向当前所在的本地分支上最近一次提交的版本。它可以理解为当前工作目录的快照,是我们在代码库中进行操作时的参照点。HEAD:默认指向 master 分⽀。

HEAD作用:

①标识当前位置:HEAD 指示了当前所在的分支以及在该分支上的最新提交。

②切换分支:当我们切换分支时,HEAD 会随之移动到所切换到的分支上,指向该分支上的最新提交

分支使用

查看分支

# 查看所有本地分支,
# 并在当前分支旁边标记一个星号(*)表示当前所在的分支
#  即HEAD指向的分支
git branch 

在这里插入图片描述

分支创建

git branch new_branch_name

分支切换

 git checkout target_branch_name

在这里插入图片描述

分支合并

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

# 首先需要切换到 master 分支
git checkout <target-branch>
# 把 source-branch 分支的更改合并到当前所在的 target-branch 分支上
 git merge <source-branch>

合并冲突

<<<<<<< HEAD
// 本地分支的修改内容
=======
// 要合并的分支的修改内容
>>>>>> branch-name

// 在通过文本编辑的方式手动解决冲突之后,需要再次commit

在实际分⽀合并的时候,并不是想合并就能合并成功的,有时候可能会遇到代码冲突的问题。
举例:
在这里插入图片描述
在这里插入图片描述

分支删除

分支与主分支合并完成后, 该分⽀对于我们来说就没⽤了, 那么dev分⽀就可以被删除掉。注意,如果当前正处于某分⽀下,就不能删除当前分⽀。

// 删除指定分支
// 这个指令会删除指定的分支,前提是该分支已完全合并到当前分支中
git branch -d <branch_name>
//这会强制删除指定分支,即使它包含未合并的更改。
git branch -D <branch_name>

分支管理

快进模式

快进模式(Fast-forward mode)是Git中一种合并分支的方式。当您尝试将一个分支合并到当前分支时,如果当前分支的指针可以直接移动到要合并的分支的最新提交,而不需要创建新的合并提交,Git就会执行快进合并。(发升合并冲突后,手动修改并再次commite就不是Fast-forward mode模式)

在快进模式下,Git会简单地将当前分支指针直接指向要合并的分支的最新提交,从而使得提交历史保持线性。这种合并方式通常发生在没有分支间的提交冲突时,可以帮助保持项目的提交历史整洁和易于理解。

但在在这种 Fast forward 模式下,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息,看不出来最新提交到底是 merge 进来的还是正常提交的。 Git ⽀持我们强制禁⽤ Fast forward 模式,那么就会在 merge 时⽣成⼀个新的 commit ,这样,从分⽀历史上就可以看出分⽀信息。

# 合并分支时禁用快进模式
# 即使是简单的合并操作也会生成一个合并提交,以保留合并的信息。
git merge --no-ff <branch-name>
# 提交
git commite -m
# 查看提交日志
git log 

分支策略

常见分支策略如下:

主分支(Master/Main):主分支通常用于存储稳定的、可部署的代码。开发团队应该保持主分支的代码始终是可用和可部署的状态。

开发分支(Develop):开发分支是用于整合各个功能特性的地方。团队成员在各自的特性分支上完成开发后,将其合并到开发分支进行集成测试。

特性分支(Feature Branches):每个新功能或任务应该在单独的特性分支上进行开发。一旦特性完成并通过测试,可以将其合并回开发分支。

发布分支(Release Branches):发布分支用于准备发布新版本。在发布分支上进行最终测试、Bug修复和版本号更新等操作。

修复分支(Hotfix Branches):用于紧急修复生产环境中的Bug的分支。修复完成后,应该将其合并回主分支和开发分支。

内容保存

# git stash 会先存储当前工作区发生的更改,再将将当前工作区发生的更改清除
# 在Git的"堆栈"中,存储当前工作区的内容
git stash

# 用于显示存储的变更列表,运行这个命令后,
# Git会列出所有已经存储的变更以及它们的引用ID
git stash list

#  git stash list 结果
#  ID(stash@{n})
stash@{0}: WIP on <branch_name>: <commit_message>
stash@{1}: On <branch_name>: <commit_message>

# 它会将最近一次存储的变更应用到当前工作目录中,但并不会从堆栈中移除这个存储项。
git stash apply
# 它会将最近一次存储的变更应用到当前工作目录中,并从堆栈中移除这个存储项。
git stash pop
# 如果你想应用存储的变更并且删除所有存储项
git stash apply stash@{n}

错误处理

(当master分支出现bug,但还有新功能要开发)
在这里插入图片描述

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

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

相关文章

学习Nginx(一):基础

介绍 Nginx是一个高性能的HTTP和反向代理的web服务器&#xff0c;它的设计重点是高并发、高性能和低内存消耗。它常被用于提供静态内容、负载均衡和作为Web服务器。 Nginx具有以下功能和特点&#xff1a; 静态文件服务&#xff1a;作为一个Web服务器&#xff0c;Nginx可以处…

SpringBoot解决CORS跨域——@CrossOrigin

前端请求后端报错了。 状态码&#xff1a;403 返回错误&#xff1a;Invalid coRs request 一个注解就搞定了。 在类上加 CrossOrigin

队列的讲解

队列的概念 队列:只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头 一端进另一端出 也就是可以做到&#xff0c;先…

数据结构与算法-排序算法3-插入排序

目录 1.插入排序&#xff1a; 1.介绍&#xff1a; 2.动态图解 3.举例 4.小结插入排序规则 5.插入排序代码 6.运行时间 代码&#xff1a; 运行结果&#xff1a; 1.插入排序&#xff1a; 1.介绍&#xff1a; 数组中n个元素&#xff0c;把这n个待排序元素看成一个有序序…

01 Triton backend

1 整体架构 三部分组成&#xff1a; Triton backend tensorRT_backend、onnx_backend、tfs_backend、torch_backend **Triton model ** 不同的模型 **Triton model instance ** 模型实例 ![P2}5X%2ULV(2OAC$_OKOP.png 2 设计思路 需要实现七个接口&#xff1a; TRITON…

Elasticsearch - HTTP

文章目录 安装基本语法索引创建索引查看索引删除索引 文档创建文档更新文档匹配查询多条件查询聚合查询映射 安装 https://www.elastic.co/downloads/past-releases/elasticsearch-7-17-0 下载完成启动bin/elasticsearch服务&#xff0c;可以在Postman调试各种请求。 基本语法…

风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码) 基于遗传算法优化BP神经网络是一种常见的方法,用于改进BP神经网络在风电功率预测中的性…

IBM Granite模型开源:推动软件开发领域的革新浪潮

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于MSWA相继加权平均的交通流量分配算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于MSWA相继加权平均的交通流量分配算法matlab仿真.如图所示交通网络中&#xff0c;包含6个节点、11各路段、9个OD对。经枚举可得每个OD对间存在3条无折返有效路…

RS编码和卷积码总结

RS编码 简要介绍RS编码及其原理 1. RS编码简介 Reed-Solomon编码&#xff08;RS编码&#xff09;是一种强大的纠错码&#xff0c;广泛应用于数据存储和传输中。RS编码由Irving S. Reed和Gustave Solomon于1960年提出&#xff0c;属于BCH码的一种&#xff0c;是基于有限域&am…

免费思维13招之十二:耗材型思维

免费思维13招之十二:耗材型思维 今天给你分享免费思维的两个子思维——相关性耗材思维和非相关性耗材思维。 相关性耗材思维,是指有一些产品的使用,需要大量的相关耗材,从而对该产品进行免费,而耗材进行资费。 举例:全世界最大的一家直销公司叫安利,它的明星产品是净水…

【Python探索之旅】列表

目录 特点 入门 访问元素 新增元素 修改元素 插入元素 删除元素 完结撒花 前言 在Python中&#xff0c;列表(List)是最常用的数据结构之一&#xff0c;类似于其他语言&#xff0c;如Java&#xff0c;与其不同啊Python中不需要声明数据类型。它提供了一种灵活且高效的方式…

数学建模入门手册

数模的主要比赛 美赛&#xff08;报名费100美元&#xff0c;每年2月比赛&#xff09;&#xff1b;国赛&#xff08;每年9月&#xff09; 电工杯&#xff08;每年5月&#xff09;&#xff1b;APMCM&#xff08;每年11月&#xff09;&#xff1b;MathorCup&#xff08;每年4月&a…

3.TCP的三次握手和四次挥手

一、前置知识 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在传输数据前通信双方必须建立连接&#xff08;所谓连接&#xff0c;是指客户端和服务端各自保存一份关于对方的信息&#xff0c;比如ip地址&#xff0c;端口号等&#xff09;。TCP通过三次握手建立一个…

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…

信噪比(SNR)的基本定义及注意事项

本文介绍信噪比&#xff08;SNR&#xff09;的基本定义及注意事项。 1.基本定义 信噪比&#xff08;SNR&#xff09;&#xff0c;指的是系统中信号与噪声的比&#xff0c;通常用分贝&#xff08;dB&#xff09;表示。 1)用功率来描述 &#xff0c;分别为信号和噪声的功率 2…

Hello,World驱动之旅,用户层简单交互(三)

目录 &#xff08;一&#xff09;上篇回顾&#xff1a;上一篇讲到用户层怎么与驱动模块进行交互。Hello&#xff0c;World驱动之旅&#xff0c;对外接口(二)-CSDN博客 &#xff08;二&#xff09;通过简单程序与驱动交互 读操作&#xff0c;代码如下&#xff1a; 写操作&…

Day28

回溯算法part02 LC组合总和II 终止条件&#xff0c;sumn且mid.size()k加入result。其他终止条件sum>n或者mid.size()>k也结束一样可以引入剪枝操作进行优化&#xff0c;其实sum>n也可以算是剪枝操作的一部分 LC17电话号码的字母组合&#xff08;超时5min&#xff…

复利效应(应用于成长)

应用 每个人在智力、知识、经验上&#xff0c;复利效应都一样&#xff0c;只要能积累的东西&#xff0c;基本上最终都会产生复利效应。 再来看一下复利公式&#xff1a;FP*(1i)^n P本金&#xff1b;i利率&#xff1b;n持有期限。在使用时&#xff0c;一定要注意4个限定条件&a…

网络安全快速入门(十二)(下) 目录结构相关命令补充

12.4 补充命令 我们已经了解了linux的目录结构&#xff0c;接下来我们大概看一下针对目录及文件的一些相关命令&#xff0c; 我们本章只讲三个目录及文件相关的命令&#xff0c;分别是tree&#xff0c;find及校验文件命令&#xff0c;我们一个一个来看这些命令。 12.4.1 tree命…