git 之 stash

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

作用

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

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

常用命令:

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

存储机制:

  • 保存的修改以栈结构存储(后进先出),可通过 git stash list 查看记录:

    bash 复制代码
    stash@{0}: On main: 修复登录页
    stash@{1}: WIP on dev: 新增搜索功能

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

作用

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

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

常用命令:

bash 复制代码
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 是 是 恢复后立即清理栈空间

示例工作流:

bash 复制代码
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 精细化控制,可大幅提升多任务开发效率。

相关推荐
゛凌乱的记忆づ7 小时前
好用的md文件编辑器——TyporaS与Typora
笔记·git·typora·markdown
এ慕ོ冬℘゜10 小时前
Git 基础规范:小步提交、提交信息规范与常用命令
git·svn
忘了ʷºᵇₐ11 小时前
Git学习笔记
笔记·git·学习
BIBI20491 天前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践
echome8881 天前
Git 日常救急:撤销提交、找回误删文件和解决冲突
git·版本控制
赵民勇2 天前
Git命令详解
git
不老刘2 天前
Antigravity 的 New Worktree 模式:给 AI 代理一个安全的“平行工位”
人工智能·git·ai编程·antigravity
光谱SpectrAI2 天前
Windows 也中招:Git Bash 和 Node 仍信任泄露的 eMudhra 证书
git
YIN_尹2 天前
【git原理与使用】git初识与安装
大数据·git·elasticsearch
Leo_Mr3 天前
Vue3 项目配置 Git 提交规范(企业通用方案:husky + commitlint + cz-git + lint-staged)
git