git stash 用法小结

2023-11-02

场景

有一天你正兴高采烈地coding…,突然现网出现一个bug让你紧急修复,但是你本地已经有了修改,你又不想提交,也总不能全部回退吧,所以你正发愁怎么办的时候恰好看到了这篇文章,它将帮你完美解决此场景的困扰,那么今天的主角就是 git stash,它会本地保存当前工作目录所有未提交的修改(每个工作目录有自己的缓存堆栈),不会上传到git服务器,在你需要的时候应用到你当前的分支(一定要注意要应用的分支是否是当时保存该stash的分支)

命令

1. 保存修改

下列两个命令都会保存当前工作目录所有未提交的修改,工作区的代码会回退到未修改之前,但有区别。

git stash

保存成功如图:
在这里插入图片描述
使用该命令保存的stash没有注释,难以分辨

git stash save 'xxx' // 'xxx'表示注释,便于区分每个stash

保存成功如图:
在这里插入图片描述
使用该命令保存的stash有注释,容易分辨

注意:未被git跟踪的代码(新增)不会被stash存储,会报 No local changes to save

2. 查看stash列表

git stash list

当我们使用 git stash 命令保存多个stash时,stash列表如下:
在这里插入图片描述
我们可以看到,两个stash除了前面的序号不同,其他信息都一模一样,很难分辨哪个是我们现在需要应用的stash。
而当我们使用 git stash save ‘xxx’ 命令保存多个stash时,stash列表如下:
在这里插入图片描述
是不是容易分辨多了?还没完,接着看↓

3. 查看差异及详细信息

查看堆栈中最新保存的stash和当前目录的差异:

git stash show

用法:
在这里插入图片描述
我们可以看到修改的文件。
我们如果想查看指定的stash和当前目录差异,可以使用:

git stash show stash@{index}

用法:
在这里插入图片描述
有的同学说这只能看到文件,看不到详细的内容啊,别急,用这个:

git stash show -p

用法:
在这里插入图片描述
我们可以很直观地看到修改了哪些地方。
当然,我们要是想看到指定的stash的详细修改,可以使用:

git stash show stash@{index} -p

用法:
在这里插入图片描述
nice!!!还没完,接着看↓

4. 应用stash

git stash pop

当只有一个stash的时候,我们大可使用 git stash pop 命令将该stash应用到当前分支:
在这里插入图片描述
值得注意的是,git stash pop 命令默认将缓存中第一个stash应用到当前分支,并且应用完后会删除该stash,我们查看一下stash列表:
在这里插入图片描述

那么有的同学就会问:那我应用完不想删除stash怎么办?
此时主角闪亮登场⭐:

git stash apply

我们先复原刚刚删除掉的stash,再使用该命令应用stash:
在这里插入图片描述
使用该命令不会删除缓存的stash,并且与 git stash pop 同样默认将缓存中第一个stash应用到当前分支,同样我们看一下stash列表:
在这里插入图片描述
很显然,二老健在

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git stash 用法小结 的相关文章

  • 如何解决 VSTS 中拉取请求中的合并冲突?

    我已经创建了拉取请求 我进入了这个 批准 按钮不执行任何操作 并且 完成 被禁用 如何解决拉取请求中的冲突 Update 微软刚刚添加了基于浏览器的合并 这可能会让你摆脱小冲突的困境 并提供自 Sprint 150 起改进了不同场景的可视化
  • 如何使用交互式变基将提交编辑为未提交?

    我想使用交互式变基来编辑以前的提交 但是当我进入该提交的编辑模式时 所有文件都已提交 我知道我可以进行更改并修改提交 但我希望所有更改最初都未提交 暂存或以其他方式 这样我就可以对其进行编辑 就像在最初提交之前一样 这可能吗 Imagine
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • 远程测试时如何搭建git开发环境

    这似乎是一个愚蠢的问题 但我觉得我对 GIT 相当了解 但我似乎无法按照我的意愿设置我的开发环境 我要么错过了一些非常简单的东西 要么我做错了 我在我的服务器上初始化了一个裸 git 存储库 将其克隆到我的本地计算机 提交我的文件并推送到原
  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • 有谁知道类似于 SVN Time-Lapse View 的 Git 工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SVN Time Lapse View 是一个跨平台查看器 可以下载文件的所有修订版本 并允许您通过拖
  • 如何正确使用“mvn release:prepare”?

    我尝试了这个命令 用dryrun在我的 Maven 项目上进行测试 mvn release clean release prepare DdryRun true DgenerateBackupPoms false Dtag solocal
  • 自动将所有 GitHub 存储库镜像到 gitlab

    对于 GitLab 必须手动为每个存储库设置拉 推镜像 我想知道那里有any way可以自动将所有 Github 存储库同步到 GitLab 这样 当您在 GitHub 中创建新的存储库时 GitLab 中的存储库将自动创建 并充当拉取镜像
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • 格里特:! [远程拒绝] HEAD -> refs/publish/master (没有新的更改)

    我做了一些更改 提交了它们并将分支推送到 Gerrit git push gerrit 现在我的更改没有出现在 Gerrit 中 我认为这是因为我手动推送更改而不是使用git 审查 https github com openstack in
  • 如何合并两个连续的 git 存储库

    我有一个相当独特的情况 我有一个名为 Project1 的存储库 我在其中工作了一些时间 几个月 一年后 我创建了存储库 Project1 Again 从 Project1 停止的地方开始 现在 我希望修订历史记录是连续的 因此我希望它们合
  • Git - 创建拉取请求而不分叉

    使用 git 已经有一段时间了 关于 git pull request 有很多教程和解释 其动机是什么等等 我遇到两种情况 1 分叉 git 仓库 我查看了一些公共 git 存储库并决定我想要做出贡献 所以我 通过以下方式创建重复的存储库F
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • Git 2.2.x 无缘无故更新旧包文件的时间戳

    Git 2 2 0 和 2 2 1 似乎修改了旧的时间戳 git objects pack pack pack偶尔会无缘无故地文件 它只是改变时间戳 内容是相同的 调试这一点很困难 因为它似乎很少进行更改 我在 2 2 0 之前的任何 Gi
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • Git - 如何将整个目录恢复到特定提交(删除任何添加的文件)

    我想恢复 git 中的目录 恢复其中的所有文件 并删除自该提交以来添加的所有文件 进行结账似乎只能满足我的第一个要求 但不会删除任何文件 我想出了最简单的解决方案 git rm path to dir git checkout
  • 无法通过 Git Bash 克隆 git 存储库

    在尝试使用克隆存储库时git clone 它显示以下错误 致命 无法访问 https github com microsoft c9 python getting started git https github com microsoft
  • git reflog 和 log 有什么区别?

    手册页说 log 显示提交日志 reflog 管理 reflog 信息 reflog 信息到底是什么 它有哪些日志没有的信息 日志看起来更详细 git log显示当前的 HEAD 及其祖先 也就是说 它打印提交 HEAD 指向的提交 然后打

随机推荐

  • SQL的递归查询子/父节点结构(MySQL)

    当数据库中存储了树型结构的数据 例如城市表时 我们要搜索一个城市的所有父级城市或所有的子级城市 首先想到的就是利用SQL的递归查询 来看下面的MySQL例子 下列例子MySQL只适用于8 0版本及以上 下载SQL 执行 表结构和数据SQL文
  • Java中TreeSet、HashSet、Collection重写比较器

    一 什么是比较器 比较器是一种可以对集合或数组中的元素按照自定义的方式进行排序的对象 它是实现了Comparator接口的类的实例 可以决定元素在集合或映射中如何被排序和存储 比较器有两种基本类型 自然排序和定制排序 自然排序是指让要排序的
  • 13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息

    SQL表达式方式可以根据发送消息时输入的属性进行一些计算 RocketMQ的SQL表达式语法 只定义了一些基本的语法功能 数字比较 如 gt gt lt lt BETWEEN 字符比较 如 lt gt IN IS NULL or IS NO
  • C语言二维字符数组的输入

    标题 C语言字符数组的输入输出 定义一个字符二维数组 输入行数n 与列数m include
  • element-ui 的 dialog 实现拖拽、水平伸缩、双击头部放大

    import Vue from vue 使用 elementUI 的 dialog 上加上 v dialogDrag 指令就可以实现弹窗的全屏和拉伸了 给 dialog 设置 close on click modal false 禁止点击遮
  • 关于Input.mousePosition在IOS的作…

    因为项目需要做 以鼠标 双指为中心缩放图片的模块 而且要发布PC版 因此为了方便 直接把PC和IOS的移动和缩放事件同时放在Update里面 void Update IosScale IosMove PcScale PcMove 其中 PC
  • 差点失业(几年前帖子,私密变公开后时间就变了)

    上周 差点被劝退 被另外一个组长收与麾下 有个哥们说 人到中年不如狗 真是如此 得拼命干了
  • 一、利用AT指令配置esp8266——esp8266WIFI模块初探&STM32串口通信再探

    文章目录 一 esp8266初探 1 esp8266简介 2 esp8266使用方式 什么是AT指令 通过何种方式发送AT指令 二 STM32串口通信再探 1 printf 函数与串口中断函数 2 例子 小试牛刀 3 例子 再进一步 三 局
  • 从0开始的算法大师(贰)

    从0开始的算法大师 标签 空格分隔 算法导论 常言道 算导 是本看不下去的好书 第二部分 排序和顺序统计量 数据结构 已经学过排序内容 第6章 堆排序 用数组A表示堆 根节点为A 1 A 0 代表A heap size 属性 说明 A le
  • SpringSecurity学习笔记

    SpringSecutity学习笔记 一 环境搭建 1 搭建一个Springboot工程 1 引入相关依赖
  • Windows mysql默认字符集修改

    一 通过MySQL命令行修改 set character set client utf8 set character set connection utf8 set character set database utf8 set chara
  • Python3,数据处理与计算,不得不掌握的高效计算函数之prod()函数,

    TOC 1 引言 小屌丝 鱼哥 你知道 prod 函数吗 小鱼 你这问的 是要打我脸吗 小屌丝 那我该怎么问呢 小鱼 你应该这要问 鱼哥 你能给我讲一讲 prod 函数吗 小屌丝 鱼哥 这话 我说不出口 小鱼 为啥 为啥 为啥子 小屌丝 因
  • java中Choice下拉列表怎么输入啊?

    小弟初学java 用Choice做了个下拉列表 当点击图中向下的箭头时 能选择出现的备选number 但是不能自己输入number 请问各位牛人 这个Choice new出来的下拉列表能不能输入啊 若能怎么输呢 谢谢各位了
  • OpenAI 何以掀翻 Google 布局多年的AI大棋?

    来源 飞哥说AI 作者 高佳 创意 李志飞 任何大卫击败歌利亚的故事 都值得我们重新思考 2023年从一场巨头之间的巨额合作开始 一场汹涌已久的AI暗战摆上了台面 随着微软和 OpenAI 融资的推进 双方在关系变得更加深厚复杂的同时 也在
  • 动画-Animation/@keyframes

    动画的使用流程有两步 分为定义动画和使用动画 定义动画相当于制作动画 有两种制作方法 一个是 from to 另一个是百分比 制作完动画之后 再在需要的地方通过 animation 来使用制作好的动画效果 1 定义动画 from to ke
  • (三)elasticSearch和MySQL的对比

    ElasticSearch和MySQL的对比 一 ES和MySQL的概念的比较 二 ES和MySQL使用场景的比较 1 MySQL更擅长的是事务类型的操作 可以确保数据的安全和一致性 如果是有事务要求 如商品的下单支付等业务操作 无疑使用M
  • Flink中的时间和窗口

    1 时间语义 在流式数据处理的过程中 有两个非常重要的时间点 一个是数据产生的时间 我们把它叫作 事件时间 Event Time 另一个是数据真正被处理的时刻 叫作 处理时间 Processing Time 我们所定义的窗口操作 到底是以那
  • 六一儿童节礼物(Python中turtle实现)

    目录 六一儿童节快乐 Python代码实现 好玩的海龟turtle 送给小朋友的节日小故事 六一儿童节快乐 一颗闪闪发光 五彩斑斓的儿童星星奉上 Python代码实现 好玩的海龟turtle import turtle as t impor
  • 阿里云推出基于大模型的工作学习AI助手“通义听悟”

    文章目录 人工智能福利文章 什么是通义听语 通义听语有哪些优势 通义听语能做什么 体验地址 写在最后 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 人工智能福利文章
  • git stash 用法小结

    场景 有一天你正兴高采烈地coding 突然现网出现一个bug让你紧急修复 但是你本地已经有了修改 你又不想提交 也总不能全部回退吧 所以你正发愁怎么办的时候恰好看到了这篇文章 它将帮你完美解决此场景的困扰 那么今天的主角就是 git st