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

news2024/11/17 13:51:34

前情:最近在开发项目中对版本管理有了新的理解,感觉在这方面有了新的收获。同时学习了一个新的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.coloradmin.cn/o/1963202.html

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

相关文章

使用 LangChain 开发 LLM 应用(3):记忆

注: 本文是基于吴恩达《LangChain for LLM Application Development》课程的学习笔记;完整的课程内容以及示例代码/Jupyter笔记见:LangChain-for-LLM-Application-Development; 课程大纲 目前 LLM 基本上都有最大 Token 的限制,即…

IEEE计算智能学会深圳分会线上讲座 22-01期: 金耀初教授的科研经验分享

IEEE计算智能学会深圳分会线上讲座 22-01期: 金耀初教授的科研经验分享_哔哩哔哩_bilibili 非限定性定语从句,使用逗号和which、动名词搭配使用, 尽量避免使用被动语态。 obviously- 使用clearly,apparently感觉上更好。 In this study/work 后面的交…

C++重载左移运算符

通过重载左移运算符&#xff0c;可以实现cout << p;直接输出类对象的各个属性。 其只能使用全局函数重载。 注意cout的定义如下&#xff1a; _EXPORT_STD extern "C" __PURE_APPDOMAIN_GLOBAL _CRTDATA2_IMPORT ostream cout; 也就是说我们一直用来输出的c…

VirtualFlow案例 | 油箱燃油晃动模拟,高效分析管路及油箱内油面变化

在探索流体行为模拟的领域&#xff0c;CFD技术为油箱燃油晃动模拟带来了革命性的转变。通过高精度的数值模拟&#xff0c;它不仅揭示了燃油在不同工况下的复杂动态&#xff0c;还为油箱设计的优化提供了关键洞察。这一技术在航空航天、汽车制造、船舶与海洋工程等多个行业中展现…

Diffree - AI一键P图,告别P图困扰,只需要输入一段文字就能轻松玩转P图的神器 本地一键整合包下载

在这个AI技术飞速发展的时代&#xff0c;我们见证了许多神奇的创新&#xff0c;比如最近火遍朋友圈的“Diffree”。这可不是一款新推出的手机游戏&#xff0c;而是一项能让设计师和摄影师们欢呼雀跃的AI图像处理技术。 它能够根据你的文字描述&#xff0c;在图片中“无痕迹”地…

1_初识pytorch

之前完全没有了解过深度学习和pytorch&#xff0c;但现在因为某些原因不得不学了。不得不感叹&#xff0c;深度学习是真的火啊。纯小白&#xff0c;有错的欢迎指正~ 参考视频&#xff1a;PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆…

企业官网后台管理|网站后台管理系统PHP源码 开源

效果展示 提交反馈 获得更多开源资料 技术交流

在 Google Cloud 上大规模部署 dbt 项目

使用 Artifact Registry、Cloud Composer、GitHub Actions 和 dbt-airflow 容器化并运行 dbt 项目 欢迎来到雲闪世界。&#xff0c;大规模管理数据模型是使用dbt&#xff08;数据构建工具&#xff09;的数据团队面临的常见挑战。最初&#xff0c;团队通常从易于管理和部署的简单…

【日记】9 个发箍只有 2 个能压住头发……(513 字)

正文 今天下午实在有些受不了&#xff0c;从正大门外走了出去。抬头望着天空&#xff0c;望着那些悠然自在纯白无暇的云&#xff0c;竟然有些眼睛疼&#xff0c;刺激到想要流泪。 我在室内待得太久太久了。似乎很久没有在这种时间段出来过了。 下午快下班的时候&#xff0c;有个…

前端面试宝典【设计模式】【2】

欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…

二进制部署k8s集群之cni网络插件flannel和calico工作原理

3、部署 CNI 网络组件 在 master01 节点上操作 上传flannel-v0.21.5.zip并解压 unzip flannel-v0.21.5.zipscp flannel*.tar 192.168.80.20:/opt/k8s/ scp flannel*.tar 192.168.80.30:/opt/k8s/ node两个节点操作 cd /opt/k8s/ docker load -i flannel.tar docker load -i …

Vue3开源Tree组件研发:节点勾选支持v-model

自研Tree组件有两个原因&#xff1a;1. 目前开源UI对Tree组件的用户API不太友好&#xff0c;2. 提升Vue3组件自研能力。 目前已实现的功能见上面思维导图。想象Tree组件的一个使用场景&#xff1a;后台管理员通过Tree组件来完成用户角色授权&#xff0c;同时支持对权限进行新增…

自动化测试概念篇

目录 一、自动化 1.1 自动化概念 1.2 自动化分类 1.3 自动化测试金字塔 二、web自动化测试 2.1 驱动 2.2 安装驱动管理 三、selenium 3.1 ⼀个简单的web自动化示例 3.2 selenium驱动浏览器的工作原理 一、自动化 1.1 自动化概念 在生活中&#xff1a; 自动洒水机&am…

cv::convexityDefects异常

cv::convexityDefects捕捉到cv::Exception OpenCV(4.8.0) C:\GHA-OCV-1\_work\ci-gha-workflow\ci-gha-workflow\opencv\modules\imgproc\src\convhull.cpp:360: error: (-5:Bad argument) The convex hull indices are not monotonous, which can be in the case when the inp…

拓扑排序(初中组)

有向无环图 定义 边有向&#xff0c;无环。英文名叫 Directed Acyclic Graph&#xff0c;缩写是 DAG。一些实际问题中的二元关系都可使用 DAG 来建模。 性质 能 拓扑排序 的图&#xff0c;一定是有向无环图&#xff1b; 如果有环&#xff0c;那么环上的任意两个节点在任意序…

特征构造和降维

特征构造&#xff08;Feature Engineering&#xff09; 特征构造是从现有数据中创建新的特征&#xff0c;以揭示数据中的隐藏关系&#xff0c;从而提高模型表现。这是数据预处理中一个关键步骤&#xff0c;可以显著提升模型的性能。 原理 通过特征构造&#xff0c;我们可以利…

“云计算环境下的等保测评要点分析“

随着云计算技术的广泛应用&#xff0c;企业越来越多地将业务迁移到云端&#xff0c;这不仅带来了灵活性和效率的提升&#xff0c;也对信息安全提出了新的挑战。等保测评作为我国信息安全等级保护制度的重要组成部分&#xff0c;其在云计算环境下的实施具有特殊性。本文将围绕“…

nginx 简单使用方法

nginx是用于 Web 服务、反向代理、内容缓存、负载均衡、媒体流传输等场景的开源软件。 主要作用有三个&#xff1a;1、反向代理 负载均衡动静分离 下载地址&#xff1a;nginx: download nginx执行命令及启动 //假设安装在E:\server\nginx-1.20.0目录下 //cmd命令进入安装文…

如何在 VitePress 中增加一个全局自定义组件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

【Python实战】轻松实现自动发送邮件

本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、开发准备三、正式开始四、总结一、前言 本文介绍如何使用Python开源项目“PythonSendMail”,快速实现自动发送带Excel报表附件的邮件。只需要进行简…