git版本回退 | 远程仓库的回退 (附实战Demo)

目录

  • 前言
  • 1. 基本知识
  • 2. Demo
  • 3. 彩蛋

前言

🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF

爬虫神器,无代码爬取,就来:bright.cn

本身暂存区有多个文件,但手快了,vscode一下子都提交了
(可我只想提交一个啊!)

为了防止走上我的老路,先带着基本知识才能进行实操!!

1. 基本知识

补充下这几个基本知识

🧾 一、git log:查看历史提交记录
🔹 作用:查看提交历史,帮助你找到 commit 的 hash 值或了解项目提交演变过程

🔹 常见用法:(命令进入之后,按q进行退出)

默认会显示详细的提交信息(commit ID、作者、时间、提交信息等)

git log

截图如下:

在这里插入图片描述

🔹 常用简化参数:

每个提交显示成一行:commit_id message,非常适合快速浏览历史

git log --oneline

截图如下:

在这里插入图片描述

图形化显示分支结构 + 简洁日志(推荐查看分支合并结构)

git log --graph --oneline --all

截图如下:

在这里插入图片描述

🔁 二、git reset:回退提交 (这个知识点要着重理解)
git reset 用于改变当前分支的指针位置,可以把代码状态退回到某个历史提交

🔹 三种模式:

模式保留工作区代码保留暂存区(index)用途和风险
–soft✅ 保留✅ 保留回退提交,但保留已暂存的更改(适合重写提交)
–mixed(默认)✅ 保留❌ 清除回退提交,并清除暂存区,保留工作目录
–hard❌ 丢弃❌ 丢弃回退提交+清除代码(危险!彻底删除修改)

🔹 常见例子:
回退最近一次提交,代码保持已暂存状态

git reset --soft HEAD~1

回退提交,清除暂存状态,代码回到“未提交”状态

git reset --mixed HEAD~1

回退提交,并丢弃所有代码修改。(慎用!)

git reset --hard HEAD~1

回退到指定 commit

git reset --hard <commit_id>

🧭 三、git reflog:记录 Git 所有 HEAD 移动记录
🔹 作用:reflog 记录了 所有的 HEAD 和分支变动,即使你已经 reset 或 hard 删除了 commit,也可以找回

🔹 用法:

git reflog

输出类似:

9d2b6b1 HEAD@{0}: reset: moving to HEAD~1
a8ef7c3 HEAD@{1}: commit: 修复 bug
1c5e3b9 HEAD@{2}: commit: 初始提交

如果误删了某次提交,可以使用 reflog 找到 commit ID,回退回来:

git reset --hard 9d2b6b1

2. Demo

如果已经push到仓库了,需要回退并保留代码到暂存区,具体如下:

git reset --soft HEAD~1  # 回退提交
git reset                # 把暂存区文件退到工作区

但是此时分支已经落后了,需要强制push一下才可!

在这里插入图片描述

之后提交个别文件即可,但
可能会出现出现:error: failed to push ... (non-fast-forward)

✅ 如果你确认要覆盖远程提交:

git push origin 分支名 --force

截图如下:

在这里插入图片描述

3. 彩蛋

一开始 git reset --hard强制回退,会清除我的暂存区!

这种情况怎么还原:
在这里插入图片描述

先通过git reflog

看到类似下面的内容:

a1b2c3d HEAD@{0}: reset: moving to 9a071d5d...
d4e5f6g HEAD@{1}: commit: 某某提交

这里,HEAD@{1} 就是你 reset 之前的位置

git reset --mixed HEAD@{1}

恢复 commit 状态

恢复暂存区内容

不会自动提交

💡 --mixed 可以把 commit 里的内容还原到暂存区

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

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

相关文章

什么事Nginx,及使用Nginx部署vue项目(非服务器Nginx压缩包版)

什么是 Nginx? Nginx(发音为 “engine-x”)是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它以其高性能、高并发处理能力和低资源消耗而闻名。以下是 Nginx 的主要特性和用途: 主要特性 高性能和高并发 Nginx 能够处理大量并发连接,适合高…

第十六周蓝桥杯2025网络安全赛道

因为只会web&#xff0c;其他方向都没碰过&#xff0c;所以只出了4道 做出来的&#xff1a; ezEvtx 找到一个被移动的文件&#xff0c;疑似被入侵 提交flag{confidential.docx}成功解出 flag{confidential.docx} Flowzip 过滤器搜索flag找到flag flag{c6db63e6-6459-4e75-…

高性能的开源网络入侵检测和防御引擎:Suricata介绍

一、Debian下使用Suricata 相较于Windows&#xff0c;Linux环境对Suricata的支持更加完善&#xff0c;操作也更为便捷。 1. 安装 Suricata 在Debian系统上&#xff0c;你可以通过包管理器 apt 轻松安装 Suricata。 更新软件包列表: sudo apt update安装 Suricata: sudo apt …

IP-address-space

导航 (返回顶部) 1. IPv4地址分配表 1.2 IPv4 专用地址注册表1.3 各国IPv4地址分配列表 2. IPv6地址分配表 2.1 IANA IPv6 专用地址注册表2.2 IPv6 多播地址分配 1. IPv4地址分配表1.2 IPv4 专用地址注册表1.3 各国IPv4地址分配列表 2. IPv6地址分配表2.1 IANA IPv6 专用地址…

Ubuntu使用war包部署Jenkins并通过systemcl管理

目录 一、当前系统环境 二、安装Java 二、安装Jenkins 三、使用systemctl管理 一、当前系统环境 操作系统&#xff1a;ubuntu 24.04 Jenkins版本&#xff1a;2.506 格式&#xff1a;war JDK版本&#xff1a;OpenJDK_17 二、安装Java 1.下载jdk安装包 # wget下载 wget …

牛客 verilog入门 VIP

1、输出1 答案&#xff1a; timescale 1ns/1nsmodule top_module(output wire one );assign one 1b1; endmodule 2、wire连线 答案&#xff1a; timescale 1ns/1nsmodule wire0(input wire in0,output wire out1 );assign out1 in0; endmodule 3、多wire连线 timescale 1…

简易版2D我的世界C++程序(有点BUG,但是可以玩!!!)

1、按空格键来切换模式&#xff08;挖掘模式和放置模式&#xff09;&#xff0c;一律用鼠标右键来操作&#xff01;&#xff01;&#xff01; 2、按数字1和2键来切换放置的方块&#xff08;1是草&#xff0c;2是木&#xff09;&#xff0c;树叶不能放置&#xff01;&#xff01…

ubuntu使用dify源码安装部署教程+避坑指南

很多人,包括我在最初使用dify的时候都习惯使用docker来部署安装环境,但在二次开发使用过程中,我们可能希望使用源码来安装,那么这篇文章我将给大家分享如何在ubuntu系统下使用源码安装,并提供大家遇到的疑难杂症如下: dify安装使用过程中报错:/console/api/workspaces/…

java知识体系结构导航

很全&#xff1a;java知识体系结构 个人笔记链接 开发工具IDEA IDEA 插件推荐清单 IDEA快捷键大全 Java基础难点 基础知识_java动态代理 基础知识_java反射机制 基础知识-java流steam 基础知识-java集合collection Spring 01.Spring 框架的演化&#xff1a;从 XML 配置到…

RabbitMQ 的专业术语

术语定义示例/说明生产者&#xff08;Producer&#xff09;发送消息到 RabbitMQ 的客户端应用程序。日志系统将错误信息发送到 RabbitMQ。消费者&#xff08;Consumer&#xff09;从 RabbitMQ 队列中接收并处理消息的客户端应用程序。一个订单处理服务从队列中读取消息并更新数…

mac安装vm虚拟机安装包

因为mac安装虚拟机时&#xff0c;发现下载过程变得不太一样&#xff0c;会比较麻烦。所以决定发一下我已经下载的安装包&#xff0c;个人用户使用免费&#xff0c;商业版请自行去官网下载&#xff01; 百度网盘下载链接 百度网盘 请输入提取码 提取码:d4rc

LLama Factory从入门到放弃

目录 简介 安装 LLama Factory界面介绍 数据格式要求 微调训练 今天在这里介绍一种常用的大模型微调框架——LLama Factory。 简介 LLama Factory 是一个高效的界面化大语言模型微调工具库&#xff0c;支持多种参数高效微调技术&#xff0c;提供简洁接口和丰富示例&#…

如何借助全球动态IP实现多平台账号的批量注册?

无论是社交网络、在线购物平台还是专业应用软件&#xff0c;账号的创建和使用都是必不可少的。然而&#xff0c;在面对不同平台各自的注册限制和策略时&#xff0c;如何高效、安全且合法地进行账号批量注册成为了亟待解决的问题。本文将探讨全球动态IP在这一过程中的作用及其如…

django admin 添加自定义页面

在Django中&#xff0c;你可以通过多种方式向Django Admin添加自定义页面。以下是一些常见的方法&#xff1a; 方法1&#xff1a;使用ModelAdmin的get_urls()方法 如果你只是想添加一个简单的页面来展示信息&#xff0c;你可以在你的ModelAdmin类中重写get_urls()方法。 from…

Docker容器持久化

引言 Docker 容器作为一种轻量级、可移植的虚拟化技术&#xff0c;广泛应用于开发、测试和生产环境中。然而&#xff0c;容器天生是短暂的&#xff0c;意味着它们在生命周期结束后会被销毁&#xff0c;而其中的数据也会随之丢失。为了确保容器中的数据能够持久化&#xff0c;我…

ShaderToy学习笔记 02.圆

1. 画圆 1.1. 圆的方程 圆的方程是&#xff1a;(x^2 y^2 r^2)&#xff0c;其中(r)是圆的半径。 我们可以使用 desmos 来验证一下。 输入 x^2 y^2 -10&#xff0c;即可得到圆。 类似下图 1.2. 画圆的方式 画圆&#xff1a;使用圆的方程&#xff0c;判断每个像素点是否在圆…

一文详解卷积神经网络中的卷积层和池化层原理 !!

文章目录 前言 一、卷积核大小&#xff08;Kernel Size&#xff09; 1. 卷积核大小的作用 2. 常见的卷积核大小 3. 选择卷积核大小的原则 二、步长&#xff08;Stride&#xff09; 1. Stride的作用 三、填充&#xff08;Padding&#xff09; 1. 填充的作用 四、通道数&#xff…

云+AI双轮驱动,亚马逊云科技加速中国企业出海新浪潮

导读&#xff1a;全球化就是本地化 作者 | 小葳 图片来源 | 摄图 近年来&#xff0c;中国企业出海步伐不断加快&#xff0c;“不出海&#xff0c;就出局”成为很多企业的共识。 据沙利文统计&#xff0c;2024年上半年&#xff0c;超过2000家中国上市企业布局海外市场&#xff…

C语言HashTable基本理解

文章目录 一、哈希表概念1. 哈希表的基本概念2. 哈希表的核心组件2.1 哈希函数2.2 冲突处理&#xff08;哈希碰撞&#xff09; 3.哈希表的三种结构(1) 数组作为哈希表示例&#xff1a; 2. Set&#xff08;集合&#xff09;示例&#xff1a;查找数组中的重复元素1. Set 基础概念…

【缓存与数据库结合最终方案】伪从技术

实现伪从技术&#xff1a;基于Binlog的Following表变更监听与缓存更新 技术方案概述 要实现一个专门消费者服务作为Following表的伪从&#xff0c;订阅binlog并在数据变更时更新缓存&#xff0c;可以采用以下技术方案&#xff1a; 主要组件 MySQL Binlog监听&#xff1a;使…