Git - git stash的使用

⭐git stash的作用:

  • git stash作为临时保存工作目录中的修改,而不需要提交这些更改。
  • 将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。
  • stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。

⭐git stash作用范围:

  • 工作区
  • 暂存区

⭐git stash的使用情况:

  • 切换分支但不想提交当前的工作
  • 紧急修复 其它分支的bug
  • 清理工作区以进行其他操作
  • 测试不同的代码版本

⭐git stash的特点:

  • 先进后出,后进先出

git stash的使用

前期准备:在dev分支中创建test1.txt,test2.txt文件,跟踪test1.txt文件(将test1.txt添加到暂存区)

⭐1. 保存当前修改

只保存工作区的修改

  • 作用范围:

    • 工作区中已跟踪文件的修改

    • 暂存区中的修改

    • 不包括:未跟踪的新文件

    • 不包括:被 .gitignore 忽略的文件

      保存未提交的修改(包括暂存区)

      newfile.txt不会被保存

      git stash

      添加描述信息

      git stash save "描述信息"

包含未跟踪的文件

  • 作用范围:

    • 所有已跟踪文件的修改

    • 暂存区中的修改

    • 未跟踪的新文件

    • 不包括:被 .gitignore 忽略的文件

      包含未跟踪的文件(新增的文件)

      git stash -u

      或 git stash --include-untracked

包含所有文件

  • 作用范围:

    • 所有已跟踪文件的修改

    • 暂存区中的修改

    • 未跟踪的新文件

    • 被 .gitignore 忽略的文件

      包含所有文件(包括被忽略的文件)

      git stash -a

      或 git stash --all

不同作用范围的对比表格

命令 工作区修改 暂存区修改 未跟踪文件 被忽略文件
git stash ✅ ✅ ❌ ❌
git stash -u ✅ ✅ ✅ ❌
git stash -a ✅ ✅ ✅ ✅

⭐2. 查看存储的stash

on dev:后的版本值为上一次提交的版本值

复制代码
# 查看 stash 列表
git stash list

# 输出示例:
# stash@{0}: On main: 描述信息
# stash@{1}: On feature: 另一个修改

⭐3. 恢复存储的修改

bash 复制代码
# 恢复最新的 stash(不删除 stash)
git stash apply

# 恢复指定的 stash
git stash apply stash@{n}

# 恢复并删除 stash(推荐)
git stash pop

# 恢复指定的 stash 并删除
git stash pop stash@{n}

情况一:在当前分支dev下取栈

情况二:切换到另一个分支dev2上取栈


⭐4. 删除stash

bash 复制代码
# 删除最新的 stash
git stash drop

# 删除指定的 stash
git stash drop stash@{n}

# 删除所有 stash
git stash clear

常见的面试问题

⭐stash 和 commit 有什么区别?

  • stash:临时保存,没有提交信息,适合临时切换
  • commit:正式提交,有提交历史,适合版本记录

⭐stash 保存到哪里?

  • stash 内容存储在 .git/refs/stash 和 .git/logs/refs/stash 中

⭐stash 会过期吗?

  • 不会,stash 会一直存在直到你删除它

⭐如何恢复已删除的 stash?

  • 可以通过 git fsck --unreachable 查找,然后使用 git show 恢复,但比较复杂
相关推荐
寺中人19 小时前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具
酬谢神明则必安20 小时前
git学习记录01
linux·git·学习
lingchen190621 小时前
版本控制 Git源代码项目管理
git
虫无涯21 小时前
Coverity 如何结合 GJB8114-2013使用?
git·单元测试·嵌入式测试·coverity·静态扫描
喵本喵叁肆1 天前
Git 深度解读:从对象模型到分支指针,把版本控制的内核讲透
git
阿钱真强道2 天前
课时00 嵌入式技术应用设计实训 | 开发环境搭建与开发板认识
git·hal库·keil·vs code·开发环境搭建·stm32f103·st-link
老李IT笔记3 天前
激活锁状态怎么检测:三个入口,四种返回值,一份排查顺序
git·智能手机·github
Joecien3 天前
【2026实测】百炼 CLI 托管 Agent 教程:bl managed-agent 配置校验、版本回滚与变更预演(附完整命令)
人工智能·git·阿里云·知识图谱·agi
行者-全栈开发3 天前
【码动四季·秋】从 commit 到发版全自动:Conventional Commits + semantic-release 发布流水线实战
git·ci/cd·自动化发布·atomgit·semantic-releas·语义化版本自动化·git 提交规范落地
Flynt4 天前
Claude Code 103 秒删掉 4.8 万个文件之后,我把自己的仓库"删"了一遍:git 能救的比你想的少
git·ai编程·claude