Debug-019-git reflog的两种使用场景

前情:最近在开发项目中对版本管理有了新的理解,感觉在这方面有了新的收获。同时学习了一个新的git指令:git reflog

实际了解之后,发现这个指令不是很常用,但是对于特定的场景的话它还是非常比较方便

这里我列举两种我觉得可以借助git reflog的使用场景

首先,我看到了几篇不错的博文,分享一下,这里就不再介绍git reflog的基础知识。我想在你真正了解过git reflog的基础之后再来看这两篇文章会加深你的印象。

Git reflog 引用日志使用详解-CSDN博客文章浏览阅读3.6k次,点赞2次,收藏9次。转载原文:https://www.jiyik.com/w/git/git-reflog本章节主要介绍 git reflog 命令。 Git 使用一种称为引用日志或“reflogs”的机制来跟踪分支顶端的更新。 许多 Git 命令接受用于指定引用或“ref”的参数,它是指向提交的指针。 常见的例子包括:git checkoutgit resetgit mergeReflogs跟踪本地仓库中Git引用的更新时间。除了分支提示引用日志之外,还为Git存储维护了一个特殊的reflog。Reflogs存_git refloghttps://blog.csdn.net/fengqianlang/article/details/122325907?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172239773316800207047014%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172239773316800207047014&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-122325907-null-null.142%5Ev100%5Econtrol&utm_term=git%20reflog&spm=1018.2226.3001.4187

Git进阶系列 | 8. 用Reflog恢复丢失的提交_git reflog 恢复-CSDN博客文章浏览阅读1.3k次,点赞4次,收藏9次。Git是最流行的代码版本控制系统,这一系列文章介绍了一些Git的高阶使用方式,从而帮助我们可以更好的利用Git的能力。你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。Git会将操作记录在Reflog中,使它成为一个有价值的日志,当出现问题时,这是一个很好的起点。中的一个文件,用来跟踪每个分支的本地提交。_git reflog 恢复https://blog.csdn.net/yuff100/article/details/131391544?ops_request_misc=&request_id=&biz_id=102&utm_term=git%20reflog&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-131391544.142%5Ev100%5Econtrol&spm=1018.2226.3001.4187

使用场景:

场景一:帮助你恢复之前删除的提交

        偶尔我们需要使用git reset 回退版本的时候,假如我们前一步没有使用git log查看提交,又如果我们关闭了git命令行,又如果我们之前也并没有推送远程分支留有备份的的话,这些都没有做的话,那我们是可以使用git reflog查看找到当前分支回退之前的版本,只要找到那个哈希值,那么使用git reset就可以回退到之前的版本(以前我认为git reset只能回退到以前的某个版本,实际上你只要有对应的版本号-哈希值,那么你可以任意穿梭)

注:这里我不举例描述(因为我已经比较熟练这个操作,详细内容可以参考我推荐的第二篇博文)

 场景二:帮你你恢复之前删除的分支

        这种情况也是存在的,比如现在你从主分支master拉取最新代码到你的开发分支develop1去开发新功能,测试环境的分支比如说是release,那我们在做项目迭代的时候会有修复问题和开发并行的时候,我们是需要经常切换分支的。假设有一天我们收到通知,我要开发的功能不需要做了,那么我的开发分支develop1不被需要了,我手欠切换到release分支,并且删掉了develop1分支。但是很快又被通知需要开发这个功能,但是我已经把develop1开发分支删掉了。我们知道那个分支是有一部分写好的功能的,如果我们不想二次开发的话,就需要尝试恢复develop1分支。同样的,远程仓库也没有备份过我刚刚开发的develop1分支,那么我们就可以通过git reflog指令去查找最近的操作日志,找到我们从develop1分支切换到release分支的记录,可以看一下当时develop1分支对应的的哈希值,或者我们在更早之前在develop1分支上一定是做过提交的,找到对应你想回到的那个版本的哈希值,此时我们要做的就是从当前稳定分支上(比如master),新建一个分支(名字随便,一般是保持和之前删除的分支名称一致),然后还是利用git reset指令,去穿梭到我复制的那个哈希值的版本,即可实现恢复之前删除的分支。

注:这里我不举例描述(因为我已经比较熟练这个操作,详细内容可以参考我推荐的第二篇博文)

小结:

        我们需要知道的是,git reflog指令相当于是我们的操作日志,使用它可以对我们有时的一些误操作或者恢复某些版本起到一定的弥补作用。不过它确实也不是必须的(如果我们做好备份,或者确定明确我们需要做什么),但是如果你在git上做错了一些事情,它或许能帮到你挽回一些损失。还有就是一个项目多人同时开发的时候,确实还是要保证应该有一个自己的分支,不要随便merge别人的代码,当然你可以先从当前你的分支切换一个新分支之后在merge别人代码,而你的代码分支一定要保留好,最好不要被污染。

git reflog

git reset --hard  哈希值

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

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

相关文章

Nextjs——国际化那些事儿

背景: 某一天,产品经理跟我说,我们的产品需要搞国际化 国际化的需求说白了就是把项目中的文案翻译成不同的语言,用户想用啥语言来浏览网页就用啥语言,虽然说英语是通用语言,但国际化了嘛,产品才…

算法--初阶

1、tips 1.1、set求交集 {1,2,3} & {2,3} & {1,2} {2} 其实就是位运算, 只有set可以这样使用, list没有这种用法 {1,2,3} | {2,3, 4} | {1,2} {1, 2, 3, 4} 并集 1.2、*与** * 序列(列表、元组)解包,如果是字典,那…

第一个 Flask 项目

第一个 Flask 项目 安装环境创建项目启动程序访问项目参数说明Flask对象的初始化参数app.run()参数 应用程序配置参数使用 Flask 的 config.from_object() 方法使用 Flask 的 config.from_pyfile() 方法使用 Flask 的 config.from_envvar() 方法步骤 1: 设置环境变量步骤 2: 编…

【C++学习第19天】最小生成树(对应无向图)

一、最小生成树 二、代码 1、Prim算法 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 510, INF 0x3f3f3f3f;int n, m; int g[N][N]; int dist[N]; bool st[N];int prim() {memset(dist, 0x3f, sizeof di…

学习分享:解析电商 API 接入的技术重难点及解决方案

在当今电商业务迅速发展的时代&#xff0c;接入电商 API 已成为许多企业提升竞争力和拓展业务的重要手段。然而&#xff0c;在这个过程中&#xff0c;往往会遇到一系列的技术重难点。本文将深入解析这些问题&#xff0c;并提供相应的解决方案。 一、电商 API 接入的技术重难点 …

c++ 初始值设定项列表(initializer_list)

引例 我们在写c代码的时候&#xff0c;多多少少会遇到这样写的&#xff1a; 如果是这样写还好说&#xff1a; 第一个是因为编译器强制匹配参数。 其他都是因为在有对应构造函数的情况下支持的隐式类型转换。 而支持的构造函数是这个&#xff1a; 如果有不懂的可以开这一篇&a…

麦田物语第十八天

系列文章目录 麦田物语第十八天 文章目录 系列文章目录一、(Editor)制作 [SceneName] Attribute 特性二、场景切换淡入淡出和动态 UI 显示一、(Editor)制作 [SceneName] Attribute 特性 在本节课我们编写Unity的特性Attribute来更好的完善我们项目,具体是什么呢,就是当…

深入理解 ReLU 激活函数及其在深度学习中的应用【激活函数、Sigmoid、Tanh】

ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数 ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数是一种广泛应用于神经网络中的非线性激活函数。其公式如下&#xff1a; ReLU ( x ) max ⁡ ( 0 , x ) \text{ReLU}(x) \max(0, x) ReLU(x)max(0,x) 在…

docker部署elasticsearch和Kibana

部署elasticsearch 通过下面的Docker命令即可安装单机版本的elasticsearch&#xff1a; docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/u…

《LeetCode热题100》---<5.①普通数组篇五道>

本篇博客讲解LeetCode热题100道普通数组篇中的五道题 第一道&#xff1a;最大子数组和&#xff08;中等&#xff09; 第二道&#xff1a;合并区间&#xff08;中等&#xff09; 第一道&#xff1a;最大子数组和&#xff08;中等&#xff09; 法一&#xff1a;贪心算法 class So…

我的256天创作纪念日

机缘 ————今天一大早收到CSDN的推送消息&#xff0c;告诉我这是我的256天创作纪念日。在这个特别的日子里&#xff0c;我回望自己踏上创作之路的点点滴滴&#xff0c;心中充满了感慨与感激。从最初的懵懂尝试到如今能够自信地分享见解&#xff0c;这段旅程不仅见证了我的成…

【教学类-73-01】20240804镂空瓶子01

背景需求&#xff1a; 瓶子里的春天呀&#xff01; - 小红书 (xiaohongshu.com)https://www.xiaohongshu.com/explore/63ef87f8000000000703acae?app_platformandroid&ignoreEngagetrue&app_version8.47.0&share_from_user_hiddentrue&xsec_sourceapp_share&…

揭秘Matplotlib等高线图:让数据‘高山流水‘间,笑点与深度并存!

1. 引言 在这个数据如山的时代&#xff0c;你是不是也曾在茫茫数海中迷失方向&#xff0c;渴望找到那片隐藏的“数据绿洲”&#xff1f;别怕&#xff0c;今天咱们就来聊聊Matplotlib这位绘图界的魔术师&#xff0c;特别是它那令人叹为观止的等高线图技能。想象一下&#xff0c…

MySQL:数据库用户

数据库用户 在关系型数据库管理系统中&#xff0c;数据库用户&#xff08;USER&#xff09;是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码&#xff0c;以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库&#xff0c;在其中执行各种类…

【QT】常用控件-上

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 目录 &#x1f449;&#x1f3fb;QWidgetenabledgeometryrect制作上下左右按钮 window frame 的影响window titlewindowIcon代码示例: 通过 qrc 管理图片作为图标 windowOpacitycursor使用qrc自…

【论文笔记】SEED: A Simple and Effective 3D DETR in Point Clouds

原文链接&#xff1a;https://arxiv.org/abs/2407.10749 简介&#xff1a;基于DETR的3D点云检测器难以达到较高的性能&#xff0c;这可能有两个原因&#xff1a;&#xff08;1&#xff09;由于点云的稀疏性和分布不均匀&#xff0c;获取合适的物体查询较为困难&#xff1b;&…

基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…

给虚拟机Ubuntu扩展硬盘且不丢数据

1.Ubuntu关机状态下先扩展&#xff0c;如扩展20GB 2.进入ubuntu&#xff0c;切换root登录&#xff0c;必须是root全选&#xff0c;否则启动不了分区工具gparted 将新的20GB创建好后&#xff0c;选择ext4,primary&#xff1b; 3.永久挂载 我的主目录在/并挂载到/dev/sda1 从图…

【C++】C++11之新的类功能与可变参数模板

目录 一、新的默认成员函数 二、新的关键字 2.1 default 2.2 detele 2.3 final和override 三、可变参数模板 3.1 定义 3.2 递归展开参数包 3.3 逗号表达式展开参数包 3.4 emplace_back 一、新的默认成员函数 在C11之前&#xff0c;默认成员函数只有六个&#xff0c;…

【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记

示例案例 为了更好地理解 K-Means 算法&#xff0c;下面通过一个简单的案例进行说明。 假设我们有以下 10 个二维数据点&#xff0c;表示不同商店的销售额&#xff08;单位&#xff1a;千元&#xff09;和顾客数&#xff08;单位&#xff1a;人&#xff09;&#xff1a; [(1…