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

git 之 stash

一、git stash:临时保存工作区修改

作用
将当前工作目录和暂存区的未提交修改保存到栈中,并恢复工作区到上一次提交的干净状态。
适用场景

  • 临时切换分支修复紧急 Bug
  • 拉取远程代码前清理工作区
  • 保存实验性代码避免生成无效提交

常用命令

git stash                  # 保存修改(默认无描述)
git stash save "修复登录页"  # 添加描述性消息
git stash -u               # 包含未跟踪文件(新增文件)
git stash -a               # 包含所有文件(包括.gitignore忽略的文件)
git stash --patch          # 交互式选择部分修改保存

存储机制

  • 保存的修改以栈结构存储(后进先出),可通过 git stash list 查看记录:
    stash@{0}: On main: 修复登录页
    stash@{1}: WIP on dev: 新增搜索功能
    

二、git stash apply:恢复保存的修改

作用
将指定 stash 中的修改应用到当前工作目录,但不删除 stash 记录。
适用场景

  • 多次恢复同一份修改(如多分支测试)
  • 避免误删重要 stash 记录

常用命令

git stash apply          # 恢复最新保存的修改
git stash apply stash@{1} # 恢复指定 stash(如 stash@{1})
git stash apply --index   # 同时恢复暂存区状态(保留原 git add 状态)

关键特性

  • 不自动删除 stash:需手动执行 git stash drop 清理
  • 可能冲突:若恢复时工作区有修改,需手动解决冲突

三、git stash apply vs git stash pop

命令恢复修改删除 stash 记录适用场景
git stash apply需多次复用同一 stash
git stash pop恢复后立即清理栈空间

示例工作流

git stash save "临时保存登录页改动"  # 保存修改 → 切换到其他分支修复 Bug
git checkout hotfix-branch         # 修复完成...
git checkout main                  # 返回原分支
git stash apply                    # 恢复修改(保留 stash 记录)
git stash drop                     # 确认无误后手动删除

四、注意

未跟踪文件需特殊处理

  • 默认不保存未跟踪文件,需添加 -u-a 参数。
    冲突解决

  • 恢复时若冲突,需手动编辑文件 → git add → 继续操作。
    长期存储风险

  • Stash 是临时工具,长期未清理的记录易混淆,建议定期用 git stash list 检查并清理。

  • git stash → 紧急任务前保存工作现场,避免无效提交。

  • git stash apply → 非破坏性恢复,适合需重复使用的场景。

  • git stash pop → 一次性恢复并清理,简化操作流程。

  • 通过 git stash list 管理记录,结合 --index-u 精细化控制,可大幅提升多任务开发效率。

http://www.xdnf.cn/news/744535.html

相关文章:

  • Git -> Git Stash临时保存当前工程分支修改
  • 第二十章 文本处理
  • 深入解析C#多态性:基类引用、虚方法与覆写机制
  • 字符串索引、幻读的解决方法
  • Pytorch---ImageFolder
  • C++ 的四种强制类型转换:static_cast、dynamic_cast、const_cast 和 reinterpret_cast
  • MIT 6.S081 2020 Lab6 Copy-on-Write Fork for xv6 个人全流程
  • 修改 vscode 左侧导航栏的文字大小 (更新版)
  • Cursor奇技淫巧篇(经常更新ing)
  • # STM32F103 串口打印配置(HAL库)
  • foundationpose位姿检测环境搭建与数据集制作
  • Android任务栈管理策略总结
  • 蓝桥杯 盗墓分赃2
  • Deepin 23.10安装Docker
  • Go语言中的布尔类型详解
  • 截面动量策略思路
  • 内存管理 : 04段页结合的实际内存管理
  • Muduo网络库重点技术详解
  • tomcat服务器以及接受请求参数的方式
  • Java网络编程实战:TCP/UDP Socket通信详解与高并发服务器设计
  • uniapp uni-id Error: Invalid password secret
  • Linux531rsync定时同步 再回忆
  • 智能测试新范式:GenAI 与 Playwright MCP 如何重塑 QA 流程
  • 【Ubuntu】摸鱼技巧之虚拟机环境复制
  • C#WinForm程序时方法很多时Form.cs文件会很长,如何分别写入多个文件,partial class的作用体现出来了。
  • 矩阵快速幂算法快速上手
  • 极大似然估计例题——正态分布的极大似然估计
  • 尚硅谷redis7 99 springboot整合redis之连接集群
  • AppTrace 视角下 App 一键拉起:提升应用转化率的高效方案​
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第四部分)