当前位置: 首页 > news >正文

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. 恢复存储的修改

# 恢复最新的 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

# 删除最新的 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恢复,但比较复杂
http://www.cnnetsun.cn/news/28906.html

相关文章:

  • 11、Free Haven:匿名存储系统的设计与挑战
  • 26、Samba 4 配置与使用指南
  • 29、网络管理与 FreeIPA 部署全解析
  • 38、声誉系统的构建与优化
  • 41、声誉服务器:原理、架构与应用
  • 38、Samba网络维护与故障排除全解析
  • 突破生成式AI边界:NextStep-1模型实现文本到图像的高保真飞跃
  • 61亿激活参数挑战400亿性能壁垒:Ling-flash-2.0重新定义大模型效率标杆
  • 10、UNIX 系统电子邮件使用指南
  • 5、代码性能优化工作流指南
  • 9、Linux 性能监测:Perf 工具与事件基础设施详解
  • 5、神经网络模型基础:权重设置方法与时间处理策略
  • 17、利用神经网络模型探索行为进化
  • 敏捷第10讲:别再纠结用什么工具了,让信息流动起来才是关键
  • 10、PKI、证书与OpenSSL详解
  • 20、TCP/IP 网络协议基础与配置详解
  • OpenAI Whisper引领语音识别革命:Python开发者的全方位实践指南
  • 人工智能领域重大突破:Qwen3-VL-235B-A22B-Thinking模型引领多模态交互新纪元
  • 2025年12月最值得信赖的GEO代运营机构实力榜单
  • GSW-Gemma3-270M-20251206-1636-GGUF:轻量级对话模型部署与应用指南
  • Qt ---- Qt6.5.3 连接MySQL数据库
  • 63、网络资源与术语全解析
  • 49、Oracle数据库中Java与WebDB/Oracle Portal的配置与使用
  • 51、互联网应用服务器(iAS)全面解析
  • 15、C语言编程:风格、命名与文档的艺术
  • 腾讯混元大模型Hunyuan-Large开源在即:3890亿参数MoE架构引领AI技术新突破
  • NCMconverter:解锁网易云音乐加密文件的专业解决方案
  • 腾讯混元3D开源P3-SAM:引领三维零件分割进入全自动时代
  • NextStep-1横空出世:140亿参数开启连续令牌 autoregressive 图像生成新纪元
  • Llama-Factory能否用于构建智能营养师推荐系统?