git如何切换分支_拜托,不要再问我Git分支如何使用

a7163a041f91a4d19f342fd6193867e8.png

今天来讲讲我使用Git分支的一些经验,记录一下,希望对大家有帮助。

阐述

在平常开发中,一般都会对应三种环境,本地环境、测试环境、线上环境。开发的基本流程都是先在本地环境开发好,再把代码发布到测试环境测试,最后再发布到线上环境。

对于代码,我们使用Git分支进行管理,一般而言会对应两个分支,master和dev。

master分支主要用于线上发布使用,dev分支用于平常的开发和测试。除此之外,我们也可以创建多个分支,比如给某次的迭代开发创建一个分支、针对一次代码优化创建一个分支,或者针对一次Bug修复,我们可以新建个分支。

Git的分支创建速度非常快,它不像svn等集中式版本控制系统,每次创建需要cp代码,而是直接改变指针指向即可。比如当前指针指向master,我们基于master最近一次的提交创建个dev分支出来,其实就是创建了个指针指向dev分支而已。在切换和合并分支的时候,也都是改变指针指向,速度非常快。

总之,Git提倡多使用分支,我们不需要吝啬使用它。

下面就来讲讲分支相关命令以及我使用分支的一些经验。

创建分支

创建分支: git branch 分支名
切换分支: git checkout 分支名
查看所有分支: git brach -a
分支合并: git merge 分支名 (把分支合并到当前分支)

删除分支

随着需求的迭代,仓库中创建的分支可能会越来越多,这个时候我们需要删除一些已经merge的分支,Git提倡分支用完即删除的做法。

以下是有关删除分支的命令。

首先使用git branch -a查看当前所有分支。
删除本地分支:git branch -d 分支1[,分支名2,分支名3...]
删除远程分支: git push origin --delete 分支名1[,分支命2,分支名...]

缓存分支修改

有时候,我们可能会同时在几个分支上进行开发,在切换分支的时,如果当前分支有修改,这个时候功能还没有全部开发完成,你并不想马上提交到版本库的话,

我们可以使用Git提供的缓存修改的命令,把这部分修改暂时缓存起来,切换回这个分支的时候,再把它取出来。

缓存修改命令:git stash 

【注:这个命令会把提交到暂存区,就是使用git add提交之后的代码缓存起来,对未经Git管控的文件修改并不做缓存】

从缓存中恢复修改并删除缓存内容: git stash pop
查看缓存列表:git stash list

最小修改提交

之前碰到过一个问题,在一次开发中,我和一个同学分别负责项目不同的模块实现,我们都基于master分支创建出一个新分支供于自己提交,也就是说在各自的分支上,我们都看不到对方的修改。

本来两个分支开发的功能基本互不影响,但期间我修改到了框架的一个公共方法,这个同学也需要调用这个方法,而且他的代码需要先上线,这个时候怎么办呢?

一种方式是在确认我自己代码上线无影响的情况下,和这个同学的代码一起上线,但这样不保险,并不能保证以后出现这种情况都能一起上线。

另外一种方式,可以用Git提供的最小修改提交命令git cherry-pick。把我修改公共方法这块给单独提交一个commit,通过git cherry-pick命令给合并到这个同学的分支上,然后让他发布上线就好。

命令:git cherry-pick commit-id

踩过的坑

我开始接触Git时,分支会不小心从dev分支上创建出来,在合并到master分支后,发现有很多不属于自己修改的文件,一些文件并不能一起合并。造成的后果就是,必须要回滚代码。

dev分支是供测试环境发布的分支,大家平时都在上面干活,合并代码比较随意,跟master分支版本的代码差异会比较大。创建分支时应该基于master最新提交上,即当前分支需要切换到master,执行git pull命令,再使用git branch创建分支。

一个比较好的习惯是,在合并到master分支时,对比自己分支和master分支的差异,确认是否属于自己提交的修改。我们可以借助于IDE提供的分支对比功能,可以非常直观的看出差异。

在不确认自己的分支到底是从哪个分支上切换出来的时,我们可以用`git reflog show 分支名`命令,来查看这个分支的演变历史。它可以告诉你是分支从哪里创建出来的,还有合并和提交的记录,对追踪问题特别有帮助。

有关冲突解决

在合并分支时,可能会碰见让人抓狂的文件冲突,这个时候Git会提示,必须要解决冲突才能进行合并。引起冲突的原因一般都是两个分支同时修改了某个文件相同位置的内容,解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

以上,就是我使用Git分支的一些经验,个人观点,仅供参考。

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

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

相关文章

搞懂HMM

文章目录1 概述2 符号说明3 两点假设4 Evaluation4.1 前向算法(forward algorithm)4.2 后向算法(backward algorithm)5 Learning6 Decoding参考资料1 概述 本文是B站上机器学习-白板推导系列(十四)-隐马尔可夫模型HMM的学习笔记&…

书店售书最低价格问题

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:本数 折扣 2 5% 3 10% 4 …

十七、PHP框架Laravel学习笔记——模型的定义

一.默认设置 框架可以使用 Eloquent ORM 进行数据库交互,也就是关系对象模型; 在数据库入门阶段,我们已经创建了一个 User.php 模型,如下: php artisan make:model Http/Models/User //默认在 app 目录 …

centos 启动一个redis_基于prometheus+grafana体系监控redis缓存服务

概述前面已经介绍了怎么用prometheus监控mysql数据库,今天主要分享下怎么去监控redis服务。由于没有redis环境,所以用docker模拟了一下。一、Docker部署1、下载sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.…

十八、PHP框架Laravel学习笔记——模型的增删改

一.增删改操作 新增方法如下,注意:默认模型接管 created_at 和 updated_at; $users new User(); $users->username 辉夜; $users->password 123; $users->email huiye163.com; $users->details 123; $use…

搞懂语音去噪

文章目录1 概述2 传统语音去噪2.1 谱减法2.2 维纳滤波法3 深度语音去噪参考资料1 概述 语音去噪(noise reduction)又被称为语音增强(speech enhancement),主要是针对于有人声的音频进行处理,目的是去除那些背景噪声,增强音频中人声的可懂性(…

软件架构设计案例_透过现象看本质:常见的前端架构风格和案例

所谓软件架构风格,是指描述某个特定应用领域中系统组织方式的惯用模式。架构风格定义一个词汇表和一组约束,词汇表中包含一些组件及连接器,约束则指出系统如何将构建和连接器组合起来。软件架构风格反映了领域中众多系统所共有的结构和语义特…

十九、PHP框架Laravel学习笔记——批量赋值和软删除

一.批量赋值 上一节增删改中,新增中我们发现需要进行批量赋值的许可;一般情况下,是为了防止提交过来的字段在部分场景中不需要或不能;所以,我们需要通过黑白名单机制进行过滤掉必要的字段; //通…

speech production model

文章目录1 概述2 source model3 filter model4 小结参考资料1 概述 本文的目的是为了厘清在speech production model中source model和filter model所扮演的角色,不涉及具体公式的推导或者模型的建立,只是为了把这两个model在干什么事情说明白。文中用到…

二十、PHP框架Laravel学习笔记——模型的作用域

一.本地作用域 很多情况下,我们在数据查找时有一部分条件会被重复且大量使用;而这个条件,可能只是在这个模型对应的数据表使用,别的表并不使用;那么这种情况,可以使用本地作用域的方式&#xf…

论文阅读 - Joint Beat and Downbeat Tracking with Recurrent Neural Networks

文章目录1 概述2 信号预处理3 分类神经网络4 动态贝叶斯网络(HMM)4.1 原始的bar pointer model4.2 原始的bar pointer model的缺点4.3 改进后的模型5 预测参考资料1 概述 最近在做音乐卡点相关的项目,需要对音乐的基本特征进行理解&#xff…

二十一、PHP框架Laravel学习笔记——模型的访问器和修改器

一.访问器 访问器:就是在获取数据列表时,拦截属性并对属性进行修改的过程;比如,我们在输出性别时,在性别左右加上括号,或给邮件转换为大写; //访问器,前固定 get&#…

python将txt转json_Python控制乐高EV3,以及VSCODE环境配置

乐高EV3的可扩展性很强,但如何用pc连接ev3,并用python代码来控制EV3,资料太少了,试着做了一次,记录在这里。需要的硬/软件硬件准备一、乐高EV3二、PC,win10系统三、TF卡(我用的是64G的&#xff…

移动文件读/写指针----lseek

头文件&#xff1a;#include<sys/types.h>、#include<unistd.h> 函数原型&#xff1a;off_t lseek(int fildes,off_t offset,int whence) 参数说明&#xff1a;fildes:文件描述符 offset:偏移量&#xff0c;正数表示正向偏移&#xff0c;负数表示负向偏移。 whence…

Yolo系列知识点梳理(Yolov1-v5)

文章目录1 概述2 Yolo系列模型2.1 基石 - Yolov12.1.1 Yolov1的网络结构2.1.2 Yolov1的feature map2.1.3 Yolov1的训练2.1.4 Yolov1的预测2.1.5 Yolov1小结2.2 Yolo9000 - Yolov22.2.1 Better2.2.1.1 引入了Batch normalization2.2.1.2 高分辨率的分类器2.2.1.3 加入了anchor机…

二十二、PHP框架Laravel学习笔记——集合的使用

一&#xff0e;创建集合 什么是集合&#xff1f;即&#xff1a;它是一种更具读取性和处理能力的数组封装&#xff1b;比如&#xff0c;我们从数据库得到的数据列表&#xff0c;它就是一种集合&#xff1b;数据集合&#xff0c;提供了大量的方法方便我们进行各种操作&#xff1…

二十三、PHP框架Laravel学习笔记——集合的常用方法

一&#xff0e;常用方法 all()方法&#xff0c;转换为属性形式输出&#xff0c;使用 dd 方法看类型&#xff1b; $collection collect([1, 2, 2, 3, 4, 4, 4]); dd($collection->all()); PS&#xff1a;$collection->dd()方法可以以 dd()模式输出&#xff0c;还有 du…

mac看图软件哪个好用_细数Mac上那些好用且免费的软件(三)

许多朋友购买了Mac电脑之后发现很多软件都没有&#xff0c;而且苹果商店好多软件都是收费的。那有没有免费的软件也能满足日常的需求呢&#xff1f;macw小编就为大家推荐一些免费且超级好用的软件&#xff0c;赶快来看看有没有你需要的吧&#xff01;细数Mac上那些好用且免费的…

图像表格实线和虚线检测

文章目录1 背景简述2 camelot中的方法2.1 二值化2.2 腐蚀膨胀2.3 轮廓检测2.4 结果展示3 基于霍夫直线检测的方法3.1 霍夫直线检测原理3.2 概率霍夫直线检测3.3 霍夫直线应用参考资料1 背景简述 图像中的表格结构化是一个比较热门的话题&#xff0c;其输入是一张图片&#xff…

二十四、PHP框架Laravel学习笔记——模型的数据集合

一&#xff0e;数据集合 数据集合&#xff0c;就是已经将模型方法 get()获取到的数据再进行处理&#xff1b;比如&#xff1a;map()方法&#xff0c;通过它可以实现类似访问器一样对字段进行处理的效果&#xff1b; $users User::get(); //使用集合方法 map 可以对输出的字…