git stash 和 git stash apply

这两个命令是 Git 中用于"临时保存和恢复工作进度"的核心功能。简单来说,git stash 负责**"存"** ,而 git stash apply 负责**"取"**。

以下是它们的详细对比和用法:

1. git stash (暂存/保存)

  • 作用 :将你当前工作区中未提交的修改(包括已暂存和未暂存的已跟踪文件)临时保存起来,并将你的工作区恢复到干净的状态(与最近一次提交一致)。
  • 使用场景:当你正在开发新功能,突然需要切换分支去修复紧急 Bug,但手头的工作还没做完,不想提交一个半成品时。
  • 常用命令
    • git stash:快速保存当前修改(默认信息为 WIP on branch...)。
    • git stash save "描述信息"git stash push -m "描述信息":保存修改并添加备注,方便日后查找。
    • git stash -u:将未跟踪的新文件(Untracked files)也一起保存。

2. git stash apply (恢复/应用)

  • 作用 :将你之前保存的修改重新应用到当前的工作区中。重点是:它不会删除 stash 列表中的记录 。你可以对同一个 stash 记录多次执行 apply
  • 使用场景:当你处理完紧急 Bug,切回原来的分支,想要恢复之前保存的代码继续开发时。
  • 常用命令
    • git stash apply:恢复最近一次保存的修改。
    • git stash apply stash@{n}:恢复指定的某一次修改(n 为数字索引,可通过 git stash list 查看)。

💡 核心进阶:apply vs pop

在实际开发中,提到 apply 就不得不提它的"兄弟"命令 git stash pop。两者的区别非常关键:

特性 git stash apply git stash pop
恢复代码 ✅ 将修改应用到工作区 ✅ 将修改应用到工作区
删除 stash 记录 保留在 stash 列表中 ✅ 应用成功后自动删除该记录
适用场景 需要反复应用同一段暂存代码,或不确定应用是否成功时 恢复代码后确认无误,不需要再次使用该暂存记录时

📝 完整的日常操作流程示例

  1. 保存进度

    复制代码
    git stash push -m "开发登录功能到一半"
  2. 查看保存列表(确认是否保存成功):

    复制代码
    git stash list
    # 输出示例: stash@{0}: On main: 开发登录功能到一半
  3. 切换分支去干别的事

    复制代码
    git checkout bugfix-branch
    # ... 修复Bug并提交 ...
  4. 切回原分支并恢复进度

    复制代码
    git checkout main
    git stash apply  # 恢复代码,且保留 stash 记录作为备份
  5. 确认无误后,清理 stash 列表(可选):

    复制代码
    git stash drop stash@{0} # 手动删除刚才恢复的记录

总结git stash 是你的"代码存档点",而 git stash apply 是"读档但不删存档",如果你希望"读档并删存档",请使用 git stash pop

相关推荐
西邮彭于晏13 分钟前
图文详解:Git分支创建、合并与冲突解决|新手零门槛完整教程
大数据·git·elasticsearch
nuisthou4 小时前
git常用命令总结
git
西邮彭于晏5 小时前
Git 标签(Tag)与版本发布完整指南|附全场景命令速查表
大数据·git·elasticsearch
潘正翔6 小时前
k8s进阶_Harbor镜像仓库
git·云原生·容器·kubernetes·gitee·github
InfinitePlus7 小时前
Git基本操作-命令行
git
茉莉玫瑰花茶8 小时前
TCP 全连接队列与 tcpdump 抓包
git·github·tcp·tcpdump
炸膛坦客9 小时前
Git 和 GitHub:(十四)rebase 到某个有新提交的远程仓库的分支
git·github
炸膛坦客1 天前
Git 和 GitHub:(十二)基于远程仓库的某一个分支的某一笔提交创建新分支
git·github
炸膛坦客1 天前
Git 和 GitHub:(十三)改分支名
git·github
他们叫我秃子1 天前
Git 使用指南笔记:从入门到团队协作
git