当前位置: 首页 > news >正文

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

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

http://www.jsqmd.com/news/1343754/

相关文章:

  • 考级小提琴推荐攻略:从练习到舞台过渡怎么选?6款好琴推荐
  • UGC平台AI视频鉴别实战:从特征分析到系统部署的完整策略
  • ISSCC 2024 34.3论文解析:数模混合存内计算如何实现通用AI加速
  • 无剪辑拆卡直播全攻略:从设备搭建到流程优化的实战指南
  • MT53D512M32D2DS-053 WT:D在工业控制中的应用:宽温规格与高带宽LPDDR4优势
  • 从开发板吃灰到调通四层PCB:硬件开发实战入门与进阶指南
  • AI副驾驶如何赋能产品经理:从需求分析到数据验证的实战指南
  • 数字IC设计与验证:核心差异、技能树与职业发展全解析
  • CBCX外汇首页路径清楚吗?顺手吗?
  • C++职责链模式解析与游戏开发实战
  • Docker Compose部署Redis:从入门到生产环境配置
  • 嵌入式开发中按键检测:从轮询到外部中断的实战指南
  • 从Claude 3.5升级到3.7:RAG系统召回率下降的架构优化实战
  • Origin校园版安装激活全攻略:从正版获取到问题排查
  • 大学生消费行为与理财观念调研:从数据洞察到财商教育实践
  • LABVIEW与三菱PLC高效通信库开发与实践
  • M1/M2 Mac运行Win 11 ARM版:虚拟机方案、性能调优与兼容性实战
  • 三月七小助手:崩坏星穹铁道自动化助手的完整使用指南
  • STM32 HAL库深度解析:从硬件抽象到实战应用
  • 基于大模型的智能文件对比:从差异检测到自动合并策略
  • AI Agent框架选型指南:从LangChain到CrewAI的适用场景与实战对比
  • Agent Memory工程化:从概念验证到生产落地的三阶段实践
  • Linux系统安装配置JDK 1.8:从核心原理到生产环境实践
  • 达梦数据库共享集群(DMDSC)部署与优化指南
  • OpenClaw本地AI智能体平台部署与实战:从Docker到自动化工作流
  • 深入理解进程创建:从fork()原理到操作系统并发编程实践
  • 从零搭建RAG系统:实战指南与性能优化全解析
  • Ubuntu上Notepad++替代方案:Notepadqq与VSCode轻量配置指南
  • XGBoost核心原理与工程优化:从梯度提升到竞赛实战
  • 精准预计算与傅里叶级数:两个被现实撕碎的幻梦