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。

相关推荐
我不会插花弄玉2 小时前
GitHub实操【由浅入深-Git】
git·github
说实话起个名字真难啊2 小时前
Git常用小问题笔记
笔记·git·elasticsearch
橙露17 小时前
git简明教程以及资源分享
大数据·git
codigger1 天前
别再靠"最终版-改"活下去了:一篇讲透 Git 与 GitHub
git·程序员·github·编程·控制版本
JustNow_Man1 天前
【Harness】本地文本向量化搜索解决方案--qmd
git·python·算法
香吧香1 天前
GitHub Actions 详解
git
Madison-No71 天前
Git版本控制工具(三)
git
可乐_不渴2 天前
【Linux】 项目自动化构建工具makefile&& 版本管理Git&&第一个程序
linux·git·自动化·1024程序员节
lzx_0022 天前
Linux 开发工具(六) 版本管理器git的简单使用
git·1024程序员节
jiangliushi62 天前
GPT-6.1 Sol 免费用:git status 里中文文件名变成一串数字乱?条命令改好
git·codex·1024程序员节