git | 回退版本 并保存当前修改到stash,在进行整合。[git checkout | git stash 等方法 ]

目录

一些常见命令:

git 回退版本

一、临时回退(不会修改历史,可随时回到当前版本)

方法1:git checkout HEAD~1

问题:处于 detached HEAD 状态下提交的,无法直接 git push

✅ 选项 1:将当前状态保存为一个新分支(推荐)

✅ 选项 2:强制推送到某个远程分支

二、永久回退(改变分支指向)

方法2:git reset

1. 保留修改(soft回退)

2. 丢弃暂存区,保留工作区修改(mixed,默认)

3. 全部丢弃(hard)

★ 保险操作:先备份一份修改

 排查package.json等环境是否有影响?

📦 步骤1:确认 package.json 有没有变

方法1:查看文件改动历史

方法2:比较当前版本与上一个版本的 package.json 差异

🛠 步骤2:排查 package-lock.json 差异

🧪 步骤3:强制同步依赖

→ 这会根据回退后的 package-lock.json,重新整理 node_modules,让环境完全对应。

如何彻底回退 package.json 和 package-lock.json?

★ 选择性的应用 stash —— 边查看 stash 中的更改,一边在 VSCode 里边调整、边预览成果

🔍 1. 查看 stash 中的内容(不影响当前代码)

👨‍💻 2. 临时应用 stash 内容(非永久)→ 可边修改边预览

git stash apply 存在冲突:git stash apply error: Your local changes to the following files would be overwritten by merge:

​编辑

🔧 3.★ 如何边修改边查看效果?—— 进入 VSCode 查看和编辑代码

💾 4. 提交你要的改动(手动提交)

⚠️ 注意:——处理完,可丢弃stash(git stash drop stash@{0})

🔄 总结你要的操作顺序:


一些常见命令:

git log --oneline                        查看提交记录,确定当前的commit

git checkout  COMMIT_ID        退回到COMMIT_ID的版本

git status                                 当前修改了哪些文件

git diff                                        查看具体改动内容

git stash drop                                放弃 stash 的内容(删除 stash区的备份)

git stash pop                                还原 stash 的内容

操作作用
git stash保存修改
git stash pop还原修改并删除 stash 记录
git stash apply还原修改但保留 stash 记录
git stash list查看所有 stash
git stash -u保存所有修改(包括新文件
git stash show -p

查看 stash 的具体代码变动

grep -r "xxxx" .全局搜索项目中的某个引用(如xxxx)

git 回退版本

一、临时回退(不会修改历史,可随时回到当前版本)

方法1:git checkout HEAD~1

将工作区回退到上一个版本,但不会改变分支指向。

git checkout HEAD~1

  • 缺点:是游离HEAD状态(detached HEAD),不能直接提交,需要创建新分支或回到当前版本。
后续问题:处于 detached HEAD 状态下提交的,无法直接 git push

两种解决方法:

✅ 选项 1:将当前状态保存为一个新分支(推荐)

这样你可以继续开发、提交,也可以推送到远程。

git switch -c xxxx 

git push origin xxx

📌 说明:

  • xxxx 是新分支名称,你可以自定义,比如 feature-xxxx
  • 之后你可以在这个分支继续开发,或合并到 master
✅ 选项 2:强制推送到某个远程分支

如果你就是想直接推送到 origin/master(慎用,可能覆盖远程):

git push origin HEAD:master

⚠️ 注意:

  • 如果远程 master 有别人提交,这样会有冲突或失败
  • 推荐只在你确定远程可以被覆盖时用 

二、永久回退(改变分支指向)

方法2:git reset

1. 保留修改(soft回退)

git reset --soft HEAD~1

  • 回退到上一个版本,保留修改内容到暂存区
2. 丢弃暂存区,保留工作区修改(mixed,默认)

git reset --mixed HEAD~1

  • 暂存区回退,工作区保留修改(适合撤销提交)。
3. 全部丢弃(hard)

git reset --hard HEAD~1

  • 完全回退到上个版本,暂存区和工作区的修改全部丢弃
  • 注意:慎用,数据无法恢复!

★ 保险操作:先备份一份修改

如果你还是不确定,建议先保存修改到分支或补丁:

git stash

→ 然后你就可以安全 git reset --hard HEAD~1,之后再用:

git stash pop

把修改还原回来。

git stash = 暂时存放修改,不丢失,方便回退或切换分支

🗂 查看所有 stash:git stash list

  • git stash 只保存已修改的内容(未跟踪的新文件不会保存,需要加 -u 参数)。
  • 要备份所有修改(包括新文件):git stash -u

 排查package.json等环境是否有影响?

📦 步骤1:确认 package.json 有没有变

方法1:查看文件改动历史

git log package.json

  • 你会看到所有修改 package.json 的提交记录(含时间、commit id、提交人)。
  • 看看最近一次修改是在回退的版本之前还是之后。

方法2:比较当前版本与上一个版本的 package.json 差异

git diff HEAD~1 package.json

  • 你会看到当前版本与上一个版本之间 package.json 的具体差异。
  • 如果没有输出 → 没变。
  • 如果有依赖被添加或删除 → 需要重新 npm install

🛠 步骤2:排查 package-lock.json 差异

同理:

git diff HEAD~1 package-lock.json

  • 这能告诉你依赖的版本号是否有变化。
  • 重点: package-lock.json 改了,node_modules 没变,运行时可能就会异常。

🧪 步骤3:强制同步依赖

无论 package.json 是否变,保险操作

npm install

→ 这会根据回退后的 package-lock.json,重新整理 node_modules,让环境完全对应。


如何彻底回退 package.jsonpackage-lock.json?

git log --oneline                        查看提交记录,确定当前的commit

git show abc1234:package.json   找到回退的目标版本,如 ID 是 abc1234,看当时的 package.json

git checkout abc1234 -- package.json package-lock.json 确认没问题后,用下面命令恢复

可以再用 grep "eventemitter3" package.json 检查确认


★ 选择性的应用 stash —— 边查看 stash 中的更改,一边在 VSCode 里边调整、边预览成果

这样你就能判断哪些是「可以要的」,哪些是「舍弃的」

🔍 1. 查看 stash 中的内容(不影响当前代码)

在终端中输入:

git stash list

输出示例:

stash@{0}: WIP on master: 26851d3 拖到画布上方后消失(数据传递?)

👉 查看详细改动内容:

git stash show -p stash@{0}

这个会显示所有修改过的文件内容,便于你判断。


👨‍💻 2. 临时应用 stash 内容(非永久)→ 可边修改边预览

git stash apply

  • 现在所有 stash 的改动已回来了,但还没提交,你可以:
    • VSCode 中逐个文件对比(左 Git 栏 → 点击文件)
    • 预览效果(运行 vite dev 之类),验证哪些改动你想保留
git stash apply 存在冲突:git stash apply error: Your local changes to the following files would be overwritten by merge:

解决暂存你要保留的文件后再 stash apply

  1. 暂存你当前的 package-lock.jsonpackage.json,保护它们

    git add package-lock.json package.json

  2. 然后执行 stash apply 时使用 --index 参数,避免覆盖已暂存的文件:

    git stash apply --index

⚠️ 说明:--index 会尽量恢复 stash 中的文件,但由于你已经暂存了 package-lock.json,它不会被覆盖。

stash 中的其他代码文件已经被成功“应用”到了你的工作区(但未提交);


🔧 3.★ 如何边修改边查看效果?—— 进入 VSCode 查看和编辑代码

打开 VSCode → 左侧源代码管理 (SCM) 面板,你会看到所有的改动文件,可以:

  • 双击文件查看每一处改动(与当前版本对比)
  • 手动修改文件内容
  • 保存后运行你的项目查看效果


💾 4. 提交你要的改动(手动提交)

git add 你要的文件

git commit -m "从 stash 中提取部分改动,修复 X 功能"


⚠️ 注意:——处理完,可丢弃stash(git stash drop stash@{0}

如果你确认所有需要的内容都已处理,可以丢弃 stash

git stash drop stash@{0}


🔄 总结你要的操作顺序:

  1. git stash apply
  2. VSCode 调整 & 预览成果
  3. 挑选需要的内容 → git addgit commit
  4. git stash drop(可选)

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

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

相关文章

Linux系统之美:环境变量的概念以及基本操作

本节重点 理解环境变量的基本概念学会在指令和代码操作上查询更改环境变量环境变量表的基本概念父子进程间环境变量的继承与隔离 一、引入 1.1 自定义命令(我们的exe) 我们以往的Linux编程经验告诉我们,我们在对一段代码编译形成可执行文件后…

尝试在软考65天前开始成为软件设计师-计算机网络

OSI/RM 七层模型 层次名功能主要协议7应用层实现具体应用功能 FTP(文件传输)、HTTP、Telnet、 POP3(邮件)SMTP(邮件) ------- DHCP、TFTP(小文件)、 SNMP、 DNS(域名) 6表示层数据格式,加密,压缩.....5会话层建立,管理&终止对话4传输层端到端连接TCP,UDP3网络层分组传输&a…

基于随机森林回归预测葡萄酒质量

基于随机森林回归预测葡萄酒质量 1.作者介绍2.随机森林算法与数据集介绍2.1定义2.2核心思想2.3主要步骤2.4数据集介绍 3.算法实现3.1数据加载与探索3.2数据可视化3.3数据预处理(标准化、划分训练/测试集)3.4模型训练与优化(随机森林回归 超参…

【赵渝强老师】在Docker中运行达梦数据库

Docker是一个客户端服务器(Client-Server)架构。Docker客户端和Docker守护进程交流,而Docker的守护进程是运作Docker的核心,起着非常重要的作用(如构建、运行和分发Docker容器等)。达梦官方提供了DM 8在Doc…

【C语言】深入理解指针(二):从数组到二维数组的指针魔法

前言 在C语言中,指针一直是一个神秘而强大的存在。它不仅可以帮助我们高效地操作内存,还能让代码更加灵活和高效。今天,我们就来深入探讨指针的多种用法,从数组到二维数组,一步步揭开指针的神秘面纱。 一、数组名的指…

【MySQL】事务

目录 基本概念事务操作自动提交事务开启事务提交事务回滚事务代码示例 事务的特性 ACID事务的隔离级别读未提交 read uncommitted读已提交 read committed可重复读 repeatable read序列化(串行) serializable操作示例 基本概念 在 MySQL 中的事务&#…

flutter doctor提示cmdline-tools component is missing错误的解决

flutter doctor检测环境后报错如下: STEP1: 配置command-lines 📌 打开Androidstudio ,找到sdkmanager 👇 安装command-line tools 如果找不到,记得打开右下角的「Show Package Details} 再次运行flutter doctor 即可正常 如…

iptables和netfilter内部报文处理

一、Iptables和netfilter 1.iptables基础 netfilter强大功能以及灵活性是通过iptables界面来实现。此命令行工具和它的前身ipchains语法相似;不过iptables使用netfilter子系统来增进网络连接、检验和处理方面的能力;ipchains使用错综复杂的规则集合来过…

[项目]基于FreeRTOS的STM32四轴飞行器: 十一.MPU6050配置与读取

基于FreeRTOS的STM32四轴飞行器: 十一.MPU6050 一.芯片介绍二.配置I2C三.编写驱动四.读取任务的测试 一.芯片介绍 芯片应该放置在PCB中间,X Y轴原点,敏感度131表示范围越小越灵敏。理想状态放置在地面上X,Y,Z轴为0,即…

JVM垃圾回收笔记01

文章目录 前言1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法查看根对象哪些对象可以作为 GC Root ?对象可以被回收,就代表一定会被回收吗? 1.3 引用类型1.强引用(StrongReference)2.软引用(SoftReference…

解决Popwindow宽高的问题。

问题 在使用Popwindow进行自定义的过程中&#xff0c;需要设置popwindow的宽高。但是宽高很多时候容易出问题。比如下面的例子。 布局文件如下 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.andr…

Bell-1量子计算机分析:开启量子计算2.0时代的创新引擎

Bell-1量子计算机:开启量子计算2.0时代的创新引擎 一、引言 1.1 研究背景 在当今科技飞速发展的时代,量子计算作为前沿领域,正深刻地改变着科技格局,引领新一轮科技革命与产业变革。自 20 世纪 80 年代量子计算概念被提出以来,历经多年的理论探索与技术攻坚,已取得了众…

什么?中断禁用失效了?

什么&#xff1f;中断禁用失效了&#xff1f; 1. 前言 道友们&#xff0c;在嵌入式的开发中我们不管是RTOS或NO-RTOS的开发&#xff0c;都无法避免“多线程”的应用场景&#xff0c;高优先级的任务或中断打断低优先级的任务或中断&#xff0c;此时为了要保证共享数据的安全性…

单表达式倒计时工具:datetime的极度优雅(Kimi)

一个简单表达式&#xff0c;也可以优雅自成工具。 笔记模板由python脚本于2025-03-22 20:25:49创建&#xff0c;本篇笔记适合任意喜欢学习的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Pyth…

[笔记.AI]多头自注意力机制(Multi-Head Attention)

多头自注意力是深度学习领域&#xff0c;特别是自然语言处理&#xff08;NLP&#xff09;和Transformer模型中的关键概念。其发展源于对序列数据中复杂依赖关系的建模需求&#xff0c;特别是在Transformer架构的背景下。 举例 比喻-读长篇文章 用一个简单的比喻来理解“多头注…

SOFABoot-02-模块化隔离方案

sofaboot 前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金…

【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现

文章目录 引言系统要求1. 环境准备&#xff1a;安装Miniconda激活环境 2. 配置pip源加速下载3. 配置学术加速&#xff08;访问国外资源&#xff09;4. 安装系统依赖5. 安装OLMOCR6. 运行OLMOCR处理PDF文档7. 理解OLMOCR输出结果9. 可视化UI界面9.1 安装界面依赖9.2 创建界面应用…

asp.net core mvc模块化开发

razor类库 新建PluginController using Microsoft.AspNetCore.Mvc;namespace RazorClassLibrary1.Controllers {public class PluginController : Controller{public IActionResult Index(){return View();}} }Views下Plugin下新建Index.cshtml {ViewBag.Title "插件页…

边缘计算革命:重构软件架构的范式与未来

摘要 边缘计算通过将算力下沉至网络边缘&#xff0c;正在颠覆传统中心化软件架构的设计逻辑。本文系统分析了边缘计算对软件架构的范式革新&#xff0c;包括分布式分层架构、实时资源调度、安全防护体系等技术变革&#xff0c;并结合工业物联网、智慧医疗等场景案例&#xff0c…

单链表:数据结构的灵动之链

本文主要讲解链表的概念和结构以及实现单链表 目录 一、链表的概念及结构 二、单链表的实现 1.1链表的实现&#xff1a; 1.2单链表的实现&#xff1a; 单链表尾插&#xff1a; 单链表的头插&#xff1a; 单链表的尾删&#xff1a; 单链表头删&#xff1a; 单链表查找&#…