Git stash 暂存你的更改(隐藏存储)

devtools/2025/2/11 14:40:41/

Git_Stash__0">一、Git Stash 概述

在开发的时候经常会遇到切换分支时需要你存储当前的更改,如果你暂时不想应用当前更改也不想放弃更改,那么你可以使用 git stash先将其隐藏存储,这样代码就会变成未修改的状态,等解决其他问题后,在将其隐藏的存储显示,就可以继续之前的工作了

Git stash 是一个非常有用的 Git 命令,它允许你临时保存你的工作目录中的更改,而不会提交这些更改到 Git 仓库中。这在你需要切换分支处理其他任务,但当前分支上的工作尚未完成时特别有用。

当你执行 git stash 命令时,Git 会创建一个新的提交对象,该对象记录了工作目录的当前状态,以及当时 HEAD提交的状态。这个提交对象不会被分配到任何分支上,但可以通过 git stash list 命令查看。

Git_Stash__7">二、Git Stash 命令的使用

Git stash 提供了多种操作来管理你的暂存更改。以下是一些常用的 Git stash 命令:

  • 保存当前工作目录和索引的状态,然后将它们回滚到 HEAD(隐藏存储)

    git stash push 或者可以简写为 git stash

  • 你可以为 stash 提供一个带消息的存储,以便更容易地识别

    git stash push -m "message"

  • 列出所有的 stash 条目

    git stash list

  • 应用指定的 stash 条目到当前工作目录,但不从 stash 列表中删除它

    git stash apply

  • 应用最近的 stash 条目,并从 stash 列表中删除它

    git stash pop

  • 删除一个指定的 stash 条目

    git stash drop

  • 清除所有的 stash 条目

    git stash clear

三、示例

比如我现在有两个分支:
两个分支当前处于不同步的状态。

在这里插入图片描述

现在我在master分支有了修改:

在这里插入图片描述

然后有突发情况,需要切换到dev分支解决Bug

在这里插入图片描述
当两个分支不同步时,在VSCode中带着更改切换分支会出现以上提示:

  • 强制迁出:是放弃当前更改
  • 迁移更改:将当前更改迁移到切换的分支
  • 存储并迁出:就是使用git stash 隐藏存储当前的更改

但是我现在不想将其更改应用,也不想放弃我的更改,此时我需要使用git stash.

为了使用命令演示,这里不借用VScode提供的可视化操作,实际上,熟悉使用命令后操作会更加快。

隐藏存储 git stash push -m 'message'
如果不需要附带消息 可以直接使用 git stash

在这里插入图片描述
隐藏后,已经看不到修改记录了,左侧更改的文件全部被隐藏。

现在就可以将分支自由切换了

在这里插入图片描述

查看隐藏的修改 git stash list

在这里插入图片描述

恢复隐藏存储 git stash pop 恢复上次存储,并删除该次隐藏存储
注意你可以在任何分支恢复,确保你当前在正确的分支‘

现在我切换到master分支,恢复我切换分支前的修改。
在这里插入图片描述
这里就恢复成功了,可以继续前面未完成的工作了。

四、注意事项

  • 使用 stash 时,未跟踪的文件默认不会被保存。如果你想包含这些文件,可以使用 -u 或 --include-untracked 选项。

  • 如果在应用 stash 时遇到冲突,stash 条目不会自动删除。你需要手动解决冲突并使用 git stash drop 来删除它。

  • 如果你不小心删除了一个重要的 stash 条目,你可能需要使用一些高级 Git 命令来恢复它,例如 git fsck 和 git reflog。

  • 当有多个stash 条目时,你可以通过git stash apply stash@{对应的条目},该命令应用后不会删除条目,如果你想应用后删除,可以使用git stash pop stash@{对应的条目}

Git stash 是一个强大的工具,可以帮助你管理工作目录中的更改,而不会影响 Git 仓库中的提交历史。正确使用 Git stash 可以使你的开发流程更加流畅和高效。


http://www.ppmy.cn/devtools/157953.html

相关文章

爬虫案例-爬取某度文档利用飞桨ch_pp-ocrv3模型提高对图片的识别

文章目录 1.安装VC_redist.x64库和开启开发者模式2.第三方库的安装和paddlehub安装3、爬取某度文档的代码4、效果 1.安装VC_redist.x64库和开启开发者模式 下载VC_redist.x64: 点击这里 在开发者选项,打开开发人员模式 2.第三方库的安装和paddlehub安装 #以下是安装…

Android studio 创建aar包给Unity使用

1、aar 是什么? 和 Jar有什么区别 aar 和 jar包 都是压缩包,可以使用压缩软件打开 jar包 用于封装 Java 类及其相关资源 aar 文件是专门为 Android 平台设计的 ,可以包含Android的专有内容,比如AndroidManifest.xml 文件 &#…

中国通信企业协会通信网络安全服务能力评定安全设计与集成服务能力评定三级要求准则...

安全设计与集成服务能力三级是通信网络安全服务能力评定安全设计与集成服务能力评定的最高等级,所需的要求也会更加严苛,不仅要满足安全设计与集成服务二级能力要求的所有条款,还要满足以下要求: 规模与资产要求 1)单位正规编制员…

哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测

哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…

【Elasticsearch】集群配置性能优化

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

Spring Boot从入门到精通:核心知识点+实战指南

目录 一、Spring Boot 是什么?为什么它如此流行? 二、快速创建你的第一个Spring Boot应用 2.1 使用Spring Initializr生成项目 2.2 核心代码示例 三、深度解析Spring Boot核心机制 3.1 自动配置原理揭秘 3.2 自定义Starter实战 四、生产环境必备…

【CubeMX+STM32】SD卡 文件系统读写 FatFs+SDIO+DMA

本篇,将使用CubeMXKeil,创建一个SD卡的 FatFSSDIODMA 文件系统读写工程。 目录 一、简述 二、CubeMX 配置 FatFSSDIO DMA 三、Keil 编辑代码 四、实验效果 实现效果,如下图: 一、简述 上两篇,已循序渐进讲解了SD、…

vue数据请求通用方案:axios的options都有哪些值

文章目录 1. axios的options都有哪些值1.1. 常用的 Axios 配置选项1.1.1 url1.1.2 method1.1.3 baseURL1.1.4 headers1.1.5 params1.1.6 data1.1.7 timeout1.1.8 withCredentials1.1.9 responseType1.1.10 onUploadProgress1.1.11 onDownloadProgress1.1.12 maxContentLength1.…