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

news2025/1/3 5:33:05

文章目录

    • 引言
    • 一、`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 的各种命令,我们可以在不影响代码版本历史的前提下,轻松地切换工作上下文,保存和恢复未完成的代码修改,以及对存储记录进行有效的管理.

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

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

相关文章

GXUOJ-算法-第三次作业

1.基础练习 Huffman树 问题描述 GXUOJ | 基础练习 Huffman树 代码解析 #include<bits/stdc.h> using namespace std; int main(){int n;cin>>n;priority_queue<int,vector <int>,greater<int> >pq;for(int i0;i<n;i){int value;cin>>…

04-微服务02

我们将黑马商城拆分为5个微服务&#xff1a; 用户服务 商品服务 购物车服务 交易服务 支付服务 由于每个微服务都有不同的地址或端口&#xff0c;相信大家在与前端联调的时候发现了一些问题&#xff1a; 请求不同数据时要访问不同的入口&#xff0c;需要维护多个入口地址…

vue导入导出excel、设置单元格文字颜色、背景色、合并单元格(使用xlsx-js-style库)

npm i xlsx-js-style <template><button click"download">下载 Excel 表格</button><el-table :data"tableData" style"width: 100%"><el-table-column prop"date" label"日期" width"180…

AI文献阅读ChatDOC 、ChatPDF 哪个好?

作为AI产品的深度使用者&#xff0c;基本每天都在使用AI。AI诞生后仿佛给所有的产品打开了新世界大门。当然AI在文献阅读方面自然也不会缺席。 先来简单对比一下ChatDOC vs ChatPDF 从表格里可以看到ChatDOC与ChatPDF都是基于GPT的产品&#xff0c;但在功能上ChatDOC还是比Chat…

小程序基础 —— 10 如何调试小程序代码

如何调试小程序代码 在进行项目开发的时候&#xff0c;不可避免需要进行调试&#xff0c;那么如何调试小程序呢&#xff1f; 打开微信开发者工具后&#xff0c;有一个模拟器&#xff0c;通过模拟器能够实时预览自己写的页面&#xff0c;如下&#xff1a; 在上部工具栏中有一个…

vue+echarts实现疫情折线图

效果&#xff1a; 代码&#xff1a; <<template><div><div id"left1" style "height:800px;width:100%"></div></div> </template><script> //疫情数据//export default {data() {return {data:{//疫情数据…

使用arduino从零做一辆ROS2Jazzy的阿克曼小车---电机驱动篇

本项目采用 Arduino Mega2560 Pro 作为主控开发板&#xff0c;电机驱动器选用 TB6612FNG&#xff0c;并配备了 12V 电源、两个直流减速电机和一个舵机。未来计划通过嘉立创将各模块集成到一个 PCB 板上&#xff0c;提升系统的集成度和稳定性。 本文将聚焦于电机驱动部分&#x…

基于源码剖析:深度解读JVM底层运行机制

每日禅语 佛说&#xff0c;给你修路的&#xff0c;是你自己&#xff1b;埋葬你的&#xff0c;也是你自己&#xff1b;帮助你的&#xff0c;是你自己&#xff1b;毁灭你的&#xff0c;也是你自己&#xff1b;成就你的&#xff0c;自然还是你自己。所以佛说&#xff1a;自作自受&…

算法进阶:贪心算法

贪心算法是一种简单而直观的算法思想&#xff0c;它在每一步选择中都采取在当前状态下最优的选择&#xff0c;以期望最终得到全局最优解。贪心算法通常适用于一些具有最优子结构的问题&#xff0c;即问题的最优解可以通过一系列局部最优解的选择得到。 贪心算法的基本思路是&a…

Hive刷分区MSCK

一、MSCK刷分区 我们平时通常是通过alter table add partition方式增加Hive的分区的&#xff0c;但有时候会通过HDFS put/cp命令或flink、flum程序往表目录下拷贝分区目录&#xff0c;如果目录多&#xff0c;需要执行多条alter语句&#xff0c;非常麻烦。Hive提供了一个"…

Windows API Set:那些“只存在但不被使用“的DLL

API Set 是什么&#xff1f; 想象一下&#xff0c;Windows就像一个大型图书馆&#xff0c;而API Set就是这个图书馆的索引系统。但这个索引系统非常特别&#xff1a;它是直接内置在Windows加载器中的"虚拟目录"。 // 一个典型的API Set映射示例 api-ms-win-core-mem…

【Java 数据结构】合并两个有序链表

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 题目 2. 解析 3. 代码实现 4. 小结 1. 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示…

图像处理-Ch6-彩色图像处理

Ch6 彩色图像处理 无广告更易阅读&#xff0c;个人博客点此进入<– 文章目录 Ch6 彩色图像处理彩色基础彩色模型(Color models)RGB(red, green, blue)CMY & CMYK(cyan, magenta, yellow/and black)HSI(hue, saturation, intensity)HSV(hue, saturation, value) 颜色空…

03.HTTPS的实现原理-HTTPS的工作流程

03.HTTPS的实现原理-HTTPS的工作流程 简介1. HTTPS的工作流程1.1. TCP的工作流程1.1.1. 三次握手的详细步骤1.1.2. 三次握手的作用 1.2. HTTPS的工作流程1.2.1. HTTPS与TCP的关系1.2.2. HTTPS的工作流程 2. 公钥和私钥的作用3. 对称密钥的生成和交换4. 对称加密和非对称加密的区…

隧道FM广播信号、隧道内调频广播信号覆盖方案选择

一、为什么汽车驶入隧道内&#xff0c;就听不到FM调频广播信号了 隧道是一个半封闭的管状结构&#xff0c;有很强的电磁屏蔽效应&#xff0c;汽车进入隧道后&#xff0c;汽车收音机就会出现沙沙的噪声&#xff0c;这是由于隧道内的调频广播信号变弱甚至无信号&#xff0c;导致车…

基于SSM的“电器网上订购系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“电器网上订购系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页 商品类型 商品管理 订单展示 商品购物车 登录页面 …

工业大数据分析算法实战-day19

day19 今天是第19天&#xff0c;昨日是针对线性规划、整数规划建模技巧进行阐述&#xff0c;今天开启第九章节—行业知识沉淀的方法&#xff0c;该章节主要是对行业知识的范畴进行探讨&#xff0c;将讨论限制在研判类的知识沉淀上&#xff0c;将业务范围侧重在PHM中&#xff0…

Unity URP多光源支持,多光源阴影投射,多光源阴影接收(优化版)

目录 前言&#xff1a; 一、属性 二、SubShader 三、ForwardLitPass 定义Tags 声明变体 声明变量 定义结构体 顶点Shader 片元Shader 四、全代码 四、添加官方的LitShader代码 五、全代码 六、效果图 七、结语 前言&#xff1a; 哈喽啊&#xff0c;我又来啦。这…

8086汇编(16位汇编)学习笔记09.宏汇编

8086汇编(16位汇编)学习笔记09.宏汇编-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 宏汇编在文件中是当做关键字的,但是在bug中运行时并没有这些指令,这些关键词被称为伪指令,cpu并不认识他们,需要经过编译器转化成 cpu认识的代码,但是他多我们写代码帮助又…

leetcode 面试经典 150 题:矩阵置零

链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1]…