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

相关推荐
滕州市燕猫虎计算机科技工作室个体工商户15 小时前
Git常用命令汇总
git
czhc114007566317 小时前
2026-09-11 一日综合:树的父链、git 概念、三方死锁、静默失败
大数据·git·elasticsearch
ChampaignWolf18 小时前
abapgit-agent:用 Git 当中介,让 Claude Code 自己完成 ABAP 闭环开发
git·ai·abap·claude·abapgit·mcp
嘴贱欠吻!18 小时前
如何成为 CJMP 贡献者:AtomGit贡献流程与要求
git·ci/cd
滕州市燕猫虎计算机科技工作室个体工商户19 小时前
.gitignore文件不生效的解决方法
git·.gitignore·.gitignore不生效
hasty21 小时前
一个 Git 分支名,如何穿透到 CI Runner 的 Shell?
git·ci/cd
橘色的喵1 天前
Claude Code 状态栏脚本:一行显示模型、上下文占用、git 分支和当前目录
linux·git·bash·claude
fangjianj1 天前
git 常用命令
git
hasty1 天前
execSync() 拼接 Git 参数的代价:从元数据到供应链执行
git·安全·安全性测试
墨白曦煜2 天前
穿透 IDE 的障眼法:Git 四大工作区与核心数据流转解析
ide·git