news 2026/8/7 3:42:35

Git Stash实战——临时保存工作进度的终极指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git Stash实战——临时保存工作进度的终极指南

一、什么是git stash?


git stash的作用是将当前工作区和暂存区中尚未提交的修改保存到堆栈中,让工作区恢复到“干净状态”(与最近一次提交一致)。

核心价值
不会污染提交历史:stash保存在特殊的堆栈区域,不会出现在git log中

更精细的存储控制:可以选择只存储工作区变更或同时存储暂存区

多进度管理能力:支持保存多个工作进度并通过索引管理

二、基础用法


2.1 暂存当前修改

# 基本用法(保存所有未提交的修改) git stash # 带描述信息(推荐) git stash save "正在开发登录功能,未完成" # Git 2.13+ 简写 git stash push -m "修复登录页面的样式"


效果:将工作区和暂存区的修改保存到栈中,恢复工作目录到最后一次提交的状态。

2.2 查看暂存列表

git stash list stash@{0}: WIP on master: abc1234 添加新功能 stash@{1}: On feature: xyz5678 修复样式问题


2.3 恢复暂存的修改

# 恢复最近一次暂存(保留暂存记录) git stash apply # 恢复并删除暂存记录 git stash pop # 恢复指定暂存 git stash apply stash@{1} git stash pop stash@{2}


区别:apply恢复后保留暂存记录,pop恢复后删除暂存记录-36。

2.4 删除暂存记录

# 删除指定暂存 git stash drop stash@{1} # 清空所有暂存 git stash clear


三、实战场景


场景1:切换分支前保存工作

# 当前在feature分支工作,未完成但需要切换到master git stash save "feature分支未完成代码" # 切换到master处理紧急事务 git checkout master # 处理完紧急事务 # 切回feature分支恢复工作 git checkout feature git stash pop


场景2:误在错误分支上开发

# 错误:在master上开发了新功能 # 保存当前修改 git stash # 切换到正确的分支 git checkout feature # 恢复修改 git stash pop


场景3:多次stash的管理

# 第一次暂存 git stash save "功能A开发一半" # 第二次暂存(在功能A的基础上继续开发) git stash save "功能A继续开发" # 查看所有暂存 git stash list # 恢复第二次暂存 git stash pop stash@{0} # 恢复第一次暂存(需要先提交第二次的修改) git stash pop stash@{1}


四、高阶技巧


4.1 只暂存工作区(保留暂存区)

git stash --keep-index


使用场景:已经git add了部分文件准备提交,但工作区还有未完成的修改不想提交。

4.2 包含未跟踪文件


默认情况下,git stash不会保存未跟踪文件(如新创建但未git add的文件)。

# 包含未跟踪文件 git stash -u # 包含未跟踪文件并忽略.gitignore git stash -a


4.3 交互式暂存(只暂存部分修改)

# 交互式选择要暂存的修改块 git stash -p


Git会按hunk(块)展示修改,让你逐块选择:

y:收起当前块

n:跳过当前块

s:把当前块继续拆小

e:手动编辑当前块

4.4 基于stash创建分支


使用场景:stash的修改与当前分支差异较大,直接apply可能产生冲突。

4.5 查看stash内容

# 查看最近一次暂存的摘要 git stash show # 查看完整补丁内容 git stash show -p # 查看指定暂存 git stash show stash@{1}


五、常见踩坑提醒

问题解决方案
新建文件未add,直接stash丢失先git add,或用git stash -u
pop后产生冲突手动解决冲突,或使用apply先预览
stash太多难以管理每次save时加描述信息
长期保留修改建议创建分支并提交,而非依赖stash


六、总结


git stash是Git工作流中不可或缺的工具-。掌握它,你就能在开发过程中随时切换上下文,而不必担心丢失未完成的工作。

核心命令速查:

操作命令
暂存修改git stash / git stash save "描述"
查看列表git stash list
恢复(保留)git stash apply
恢复(删除)git stash pop
删除记录git stash drop
清空所有git stash clear

感谢浏览,希望这篇博客对你有所帮助~(^ - ^)~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 3:42:09

PWM技术详解:从基础原理到STM32/Arduino实战应用

1. 从“开关”到“魔法”:PWM究竟是什么? 如果你玩过Arduino控制舵机,或者调过电脑风扇的转速,那你大概率已经和PWM打过交道了。PWM,全称脉冲宽度调制,听起来挺唬人,但它的核心思想其实特别简单…

作者头像 李华
网站建设 2026/8/7 3:41:17

AUTOSAR-UDS诊断实战:从DCM、Dem模块到关键服务开发详解

1. 从零开始理解AUTOSAR-UDS诊断:它到底是什么,为什么这么重要?如果你正在从事汽车电子软件开发,或者刚刚踏入这个领域,那么“AUTOSAR-UDS诊断”这个词组对你来说一定不陌生。它就像汽车软件世界里的“体检医生”和“维…

作者头像 李华
网站建设 2026/8/7 3:40:59

433MHz天线设计实战:从阻抗匹配到环境部署的完整指南

1. 从“天线”到“系统”:433MHz接收的完整认知 提起433MHz接收天线,很多刚接触无线通信的朋友可能会觉得,这不就是一根铜丝或者一小块PCB板子吗?找个现成的模块接上,似乎就能收到信号了。我最初也是这么想的&#xff…

作者头像 李华
网站建设 2026/8/7 3:39:04

学术简历撰写指南:从STAR法则到量化成果,打造博士申请敲门砖

1. 项目概述:一份简历,一场无声的面试 在学术圈摸爬滚打这些年,从自己申请硕士、博士,到后来参与导师的招生工作,再到独立评审申请材料,我经手看过的简历,没有一千也有八百份了。看得越多&#…

作者头像 李华
网站建设 2026/8/7 3:38:57

STM32中断机制深度解析:从NVIC/EXTI到中断服务函数的完整流程

1. 项目概述:从“轮询”到“中断”的思维跃迁 如果你刚开始接触STM32,或者从51单片机转过来,可能对“中断”这个概念既熟悉又陌生。熟悉的是,几乎每个教程都会提到它;陌生的是,它背后的运行机制总感觉隔着一…

作者头像 李华
网站建设 2026/8/7 3:38:11

从QClaw看AI Agent入口竞争:微信小程序技术实现与实战指南

1. 从“QClaw”上线看AI Agent的战场转移最近,一个名叫“QClaw”的AI助手在微信小程序里悄悄上线了,圈内人戏称它为“微信版‘小龙虾’”。这个名字的趣味性,掩盖了一个正在发生的深刻变化:AI Agent的竞争,正从单纯的技…

作者头像 李华