【日常开发】Git Stash使用技巧

文章目录

    • 引言
    • 一、`git stash` 基础命令
      • (一)存储当前工作区的修改
      • (二)查看存储列表
    • 二、查看存储的内容
      • (一)查看特定存储的详细内容
      • (二)查看特定存储修改的文件列表
    • 三、恢复存储的修改
      • (一)恢复并删除存储
      • (二)恢复但不删除存储
    • 四、管理存储记录
      • (一)删除单个存储记录
      • (二)清空所有存储记录
    • 五、`git stash` 的扩展用法
      • (一)存储特定文件或目录的修改
      • (二)从存储创建分支
    • 六、总结

引言

今天给大家详细分享下git stash 命令使用详情, 因为使用 Git 进行版本控制的过程中,你是否常常遇到这样的情况:正在进行一项功能开发,代码写到一半,突然需要切换到其他分支去处理一些紧急事务,但又不想提交这些未完成的代码?或者在拉取远程分支的最新代码之前,想要先保存当前工作区的修改状态? 这时候,git stash 命令就成为了你的得力助手。

一、git stash 基础命令

(一)存储当前工作区的修改

这个命令会将当前工作目录和暂存区的所有未提交的修改保存起来,包括新增、修改和删除的文件,并将其存储在一个栈结构中,每个存储都可以附带一个描述信息(message),以便后续识别。执行该命令后,工作区会恢复到最近一次提交时的状态,你可以放心地进行其他操作,比如切换分支、拉取代码等。

  • 示例模板:git stash save [message]
# 没有message
git stash
# 有message
git stash save '正在开发的新功能,未完成阶段'

(二)查看存储列表

该命令的输出通常是一个列表,每个条目代表一个已保存的 stash

git stash list

在这里插入图片描述

二、查看存储的内容

(一)查看特定存储的详细内容

显示哪些文件被修改、新增或删除,让你快速了解存储的大致内容

  • 示例模板:git stash show -p [stash@{n}]
  • -p 选项表示以补丁的形式展示存储的内容,stash@{0} 表示最新的一次存储(n 从 0 开始递增,代表存储的顺序)。
  git stash show -p stash@{0}

在这里插入图片描述

(二)查看特定存储修改的文件列表

此命令只会列出被修改的文件列表,不显示具体的代码修改细节

  • 示例模板:git stash show [stash@{n}]
git stash show stash@{1}

在这里插入图片描述

三、恢复存储的修改

(一)恢复并删除存储

这个命令会将指定的存储(stash@{0})从栈中弹出,并将其中的修改应用到当前工作目录。如果在应用过程中遇到冲突,Git 会像合并分支时一样标记出冲突的部分,需要你手动解决冲突后再提交。一旦应用成功,该存储就会从存储列表中删除

  • 示例模板:git stash pop [stash@{n}]
git stash pop stash@{0}

(二)恢复但不删除存储

apply 命令与 pop 类似,会将指定存储(stash@{0})的修改应用到当前工作目录,但不同的是,它不会从存储列表中删除该存储。 这意味着你可以多次应用同一个存储,或者在应用后仍然保留存储记录,以便后续参考或在其他分支上应用

  • 示例模板:git stash apply [stash@{n}]
git stash apply stash@{0}
# 默认是应用第一个
git stash apply  

四、管理存储记录

(一)删除单个存储记录

当你确定不再需要某个特定的存储记录(stash@{3})时,可以使用这个命令将其从存储列表中删除,释放存储空间并保持存储列表的整洁。如果不指定 stash@{n},则默认删除最新的存储记录,所以在使用时要格外小心,确保删除的是你真正不再需要的存储。

  • 示例模板:git stash drop [stash@{n}]
 git stash drop stash@{3}

(二)清空所有存储记录

如果你想要一次性删除所有的存储记录,使用 git stash clear 命令。这是一个比较“强力”的操作,因为它会将所有的存储记录都清除,不可逆地删除所有未应用的代码变更存储。在执行此命令之前,一定要确认你已经不再需要这些存储,或者已经将其中重要的修改应用到了工作区或者备份到了其他地方,以免造成数据丢失。

git stash clear

五、git stash 的扩展用法

(一)存储特定文件或目录的修改

有时候,你可能并不想存储整个工作区的修改,而是只关注某些特定文件或目录的变更。--patch 选项允许你交互式地选择要存储的文件块,对于大型文件的部分修改非常有用;--keep-index 选项可以让你在存储修改时,保持暂存区的现有状态,即只存储工作区的修改,而不影响已经暂存的文件;--include-untracked 选项则会将未跟踪的文件也一并存储起来。

  • 示例模板:git stash push [--patch] [--keep-index] [--include-untracked] [<pathspec>…​]
  git stash push --patch src/

(二)从存储创建分支

如果你希望基于某个存储的修改创建一个新的分支来继续开发,可以使用这个命令。它会创建一个新的分支(new-branch),可以使用下面的命令

  • 示例模板:git stash branch <new-branch-name> [stash@{n}]
git stash branch new-branch stash@{0}

六、总结

git stash 是一个强大而灵活的 Git 工具,它为我们在复杂的开发过程中提供了便捷的代码变更管理方式。通过合理运用 git stash 的各种命令,我们可以在不影响代码版本历史的前提下,轻松地切换工作上下文,保存和恢复未完成的代码修改,以及对存储记录进行有效的管理.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超详细!一文搞定PID!嵌入式STM32-PID位置环和速度环

本文目录 一、知识点1. PID是什么&#xff1f;2. 积分限幅--用于限制无限累加的积分项3. 输出值限幅--用于任何pid的输出4. PID工程 二、各类PID1. 位置式PID&#xff08;用于位置环&#xff09;&#xff08;1&#xff09;公式&#xff08;2&#xff09;代码使用代码 2. 增量式…

数据库系统原理复习汇总

数据库系统原理复习汇总 一、数据库系统原理重点内容提纲 题型&#xff1a;主观题 1、简答题 第一章&#xff1a;数据库的基本概念&#xff1a;数据库、数据库管理系统、三级模式&#xff1b;两级映像、外码 第二章&#xff1a;什么是自然连接、等值连接&#xff1b; 第三…

【Spring】 Bean 注入 HttpServletRequest 能保证线程安全的原理

文章目录 前言1. 图示2. 源码坐标后记 前言 今天看了一段老业务代码&#xff0c;HttpServletRequest 被注入后直接用于业务逻辑。 好奇Spring是如何解决线程安全问题。 Controller public class TestController {ResourceHttpServletRequest request;ResponseBodyGetMapping(…

大数据面试笔试宝典之Flink面试

1.Flink 是如何支持批流一体的? F link 通过一个底层引擎同时支持流处理和批处理. 在流处理引擎之上,F link 有以下机制: 1)检查点机制和状态机制:用于实现容错、有状态的处理; 2)水印机制:用于实现事件时钟; 3)窗口和触发器:用于限制计算范围,并定义呈现结果的…

【Linux】进度条

本文中&#xff0c;我们来写一个进度条。 本文大纲&#xff1a; 写一个命令行版的进度条。 1.回车换行 2.缓冲区问题&#xff08;本文不深究&#xff09; ​ 2.1测试代码 3.写一个什么样的进度条&#xff1f; ​ version1 ​ version2 回车换行 这俩不是一个概念&…

React引入Echart水球图

在搭建React项目时候&#xff0c;遇到了Echart官方文档中没有的水球图&#xff0c;此时该如何配置并将它显示到项目中呢&#xff1f; 目录 一、拓展网站 二、安装 三、React中引入 1、在components文件夹下新建一个组件 2、在组件中引入 3、使用水波球组件 一、拓展网站 …

mysql三种读取模式(普通、流式、游标)

在与MySQL数据库交互时&#xff0c;数据的读取方式有多种选择&#xff0c;包括流式读取、游标读取和普通读取。每种方式都有其独特的原理、优势和劣势。本文将对这三种读取方式进行详细介绍&#xff0c; 1. 普通读取 介绍 普通读取是指通过JDBC的Statement或PreparedStateme…

【畅购商城】微信支付之支付模块

目录 支付页面 接口 后端实现 前端实现​​​​​​​ ​​​​​​​支付页面 步骤一&#xff1a;创建 flow3.vue组件 步骤二&#xff1a;引入第三方资源&#xff08;js、css&#xff09; <script> import TopNav from ../components/TopNav import Footer from …

如何在 Ubuntu 上安装 PyTorch

简介 PyTorch 因其易用性、动态计算图和高效性而日益流行&#xff0c;成为实现深度学习模型的首选。如果你想探索这个工具并学习如何在 Ubuntu 上安装 PyTorch&#xff0c;本指南将对你有所帮助&#xff01; 在本教程中&#xff0c;我们将引导你完成在 Ubuntu 系统上使用 Pip…

如何设置Edge浏览器访问软件

使用Edge浏览器访问分销ERP A\V系列软件时会出现各种报错&#xff0c;如何设置Edge浏览器使其正常访问&#xff0c;请看下面的具体操作。 一、打开Edge浏览器&#xff0c;点击右上角的 设置及其他&#xff0c;如图&#xff1a; 二、在弹出界面中&#xff0c;点击 扩展&#xff…

ASP.NET Web应用程序出现Maximum request length exceeded报错

一、问题描述 在ASP.NET的web应用中&#xff0c;导出数据时出现500 - Internal server error.Maximum request length exceeded。 二、原因分析 这个错误通常出现在Web应用程序中&#xff0c;表示客户端发送的HTTP请求的长度超过了服务器配置的最大请求长度限制。这可能是因为…

springboot配置oracle+达梦数据库多数据源配置并动态切换

项目场景&#xff1a; 在工作中很多情况需要跨数据库进行数据操作,自己总结的经验希望对各位有所帮助 问题描述 总结了几个问题 1.识别不到mapper 2.识别不到xml 3.找不到数据源 原因分析&#xff1a; 1.配置文件编写导致识别mapper 2.配置类编写建的格式有问题 3.命名…

大数据技术-Hadoop(一)Hadoop集群的安装与配置

目录 一、准备工作 1、安装jdk&#xff08;每个节点都执行&#xff09; 2、修改主机配置 &#xff08;每个节点都执行&#xff09; 3、配置ssh无密登录 &#xff08;每个节点都执行&#xff09; 二、安装Hadoop&#xff08;每个节点都执行&#xff09; 三、集群启动配置&a…

【513. 找树左下角的值 中等】

题目&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 提示: 二叉树的节点个数的范围是 …

EKF 自动匹配维度 MATLAB代码

该 M A T L A B MATLAB MATLAB代码实现了扩展卡尔曼滤波( E

【小程序】wxss与rpx单位以及全局样式和局部样式

目录 WXSS 1. 什么是 WXSS 2. WXSS 和 CSS 的关系 rpx 1. 什么是 rpx 尺寸单位 2. rpx 的实现原理 3. rpx 与 px 之间的单位换算* 样式导入 1. 什么是样式导入 2. import 的语法格式 全局样式和局部样式 1. 全局样式 2. 局部样式 WXSS 1. 什么是 WXSS WXSS (We…

RSA公钥私钥对在线生成工具--可生成pem,xml,raw等密钥格式

支持生成pkcs8,pkcs1,xml,raw,openssh格式的公钥私钥对&#xff0c;如下图所示&#xff1a; 具体请访问:在线RSA公钥私钥对生成器--生成导出pkcs8/pkcs1 pem证书,raw,xml,openssh等格式,并可指定密钥长度

VMware虚拟机与主机如何传文件

利用Windows局域网的文件夹共享功能。 然后&#xff0c;进入虚拟机文件夹&#xff0c;右键点击网络&#xff0c;映射网络编辑器 输入路径&#xff0c;按照提示登录即可访问

在 React 项目中安装和配置 Three.js

React 与 Three.js 的结合 &#xff1a;通过 React 管理组件化结构和应用逻辑&#xff0c;利用 Three.js 实现 3D 图形的渲染与交互。使用这种方法&#xff0c;我们可以在保持代码清晰和结构化的同时&#xff0c;实现令人惊叹的 3D 效果。 在本文中&#xff0c;我们将以一个简…

TCP 为什么采用三次握手和四次挥手以及 TCP 和 UDP 的区别

1. TCP 为什么采用三次握手和四次挥手 采用三次握手的原因&#xff1a; 确认双方的收发能力。第一次握手&#xff0c;客户端发送 SYN 报文&#xff0c;告诉服务器自身具备发送数据的能力&#xff0c;第二次握手&#xff0c;服务器回应 SYN ACK 报文&#xff0c;表名自己既能…