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

devtools/2025/1/1 12:40:11/

文章目录

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

引言

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

git_stash__6">一、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__98">五、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.ppmy.cn/devtools/146460.html

相关文章

在k8s上使用strimzi operator安装kafka集群

文章目录 部署步骤 Strimzi Operator 是一种强大的工具&#xff0c;它简化了 Kafka 在 Kubernetes 环境中的部署和管理, 记录下部署教程 部署步骤 官方地址: https://strimzi.io/quickstarts/ 创建命名空间: kubectl create namespace kafka-system 安装operator, 完成后 kub…

影刀进阶指令 | Kimi (对标ChatGPT)

文章目录 影刀进阶指令 | Kimi &#xff08;对标ChatGPT&#xff09;一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 确定问题2\. 填写问题并发送3\. 检测答案是否出完 四. 运维 影刀进阶指令 | Kimi &#xff08;对标ChatGPT&#xff09; 简单讲讲RPA调用kimi实现…

虚幻5 UE5 UNREALED_API d虚幻的

在虚幻引擎的模块化系统中&#xff0c;UNREALED_API 用于声明那些需要被其他模块访问的类和函数。当你在一个模块中标记一个类或函数为 UNREALED_API 时&#xff0c;如果该模块被编译为DLL&#xff0c;那么这个宏会使得该类或函数在DLL边界上被正确地导出。如果其他模块依赖于这…

计算机毕业设计Python+Spark知识图谱酒店推荐系统 酒店价格预测系统 酒店可视化 酒店爬虫 酒店大数据 neo4j知识图谱 深度学习 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

基于进程信号量的多线程同步机制研究与实现

1 信号量 1.1 原理与概念 信号量机制本质是对于资源的预订操作&#xff0c;线程或者进程预订了之后&#xff0c;确保未来有一段时间&#xff0c;资源是属于我的。 对于预订资源&#xff0c;会有一个最小单位&#xff0c;资源都是以这个最小单位为整体被使用的。 信号量需要做…

【超级详细】七牛云配置阿里云域名详细过程记录

0. 准备一个阿里云域名&#xff0c;记得要备案&#xff01;&#xff01;&#xff01;&#xff01; 1. 创建七牛云存储空间 首先&#xff0c;登录七牛云控制台&#xff0c;创建一个新的存储空间&#xff08;Bucket&#xff09;。这个存储空间将用于存放你的文件&#xff0c;并…

python爬虫----爬取视频实战

python爬虫-爬取视频 本次爬取&#xff0c;还是运用的是requests方法 首先进入此网站中&#xff0c;选取你想要爬取的视频&#xff0c;进入视频页面&#xff0c;按F12&#xff0c;将网络中的名称栏向上拉找到第一个并点击&#xff0c;可以在标头中&#xff0c;找到后续我们想要…

Python库中三次样条不同形式使用比较

文章目录 Python库中三次样条不同形式使用比较Python库中三次样条不同形式使用比较位置比较示意图速度比较示意图加速度比较示意图 介绍如何使用三次样条的预测功能实现一个画圆的功能提供一阶或者二阶导致来对轨迹进行精确拟合功能 Python库中三次样条不同形式使用比较 Pytho…