news 2026/9/5 23:33:23

Git Stash 用法详解:把未完成的工作先“藏起来”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git Stash 用法详解:把未完成的工作先“藏起来”

前言

写代码时经常遇到这种情况:

  • 正在改一个功能,突然来了紧急 bug 要修
  • 想临时切换分支去看别人的代码
  • 本地改了一堆文件,但还不想提交

这时候如果直接git checkoutgit pull,Git 会报错,说你有未提交的修改。

Git Stash就是专门解决这个问题的工具——它能把你当前工作区的修改临时“藏”起来,让工作区变得干净,等你处理完其他事情后再把修改取回来。

下面用最通俗的方式讲清楚它的用法,并配上可直接复制运行的示例。

1. 最常用的基本操作

把当前修改藏起来
git stash

或者带上说明(推荐):

git stash save "临时修改:登录页面样式还没调完"

执行后,你的工作区和暂存区会变得干净,所有未提交的修改都被存到了 stash 里。

查看已经藏了哪些东西
git stash list

输出类似:

stash@{0}: On main: 临时修改:登录页面样式还没调完 stash@{1}: On main: 紧急修复前的半成品

数字越小表示越新。

把修改取回来(两种方式)

方式一:取出并删除这条记录(最常用)

git stash pop

相当于“取出来 + 扔掉这条记录”。

方式二:只取出,但保留记录

git stash apply

适合你想多次应用同一份修改的情况。

如果有多条记录,可以指定哪一条:

git stash pop stash@{1} git stash apply stash@{0}

2. 实际工作中的典型场景

场景 1:紧急修复 bug
# 正在开发新功能,工作区有一堆未提交修改 git status # 先把修改藏起来 git stash save "新功能开发到一半" # 切换到稳定分支修 bug git checkout main # ... 修 bug、提交 ... # 修完后切回原来的分支 git checkout feature/login # 把之前藏的修改取回来继续干 git stash pop
场景 2:想临时看一下别的分支代码
git stash git checkout other-branch # 随便看看 git checkout - git stash pop
场景 3:只想藏部分文件(不是全部)
# 先把想保留的文件暂存 git add src/login.js # 只把未暂存的修改藏起来 git stash --keep-index

或者用交互式选择:

git stash -p

会一个一个问你要不要 stash 这个改动。

3. 进阶但很实用的命令

命令作用示例
git stash show查看某条 stash 改了什么git stash show -p stash@{0}
git stash drop删除某条记录git stash drop stash@{1}
git stash clear清空所有 stash(慎用)git stash clear
git stash branch从某条 stash 直接创建新分支git stash branch temp-branch stash@{0}
git stash -u把未跟踪的新文件也一起藏起来git stash -u
git stash -a连 ignored 文件也一起藏git stash -a

特别推荐

# 想把未跟踪的新文件也一起藏起来(很常见) git stash -u

4. 几个容易踩坑的点

  1. stash 默认不包含未跟踪文件
    新创建的文件如果不git add,用普通git stash是藏不了的,需要加-u

  2. 冲突处理popapply时如果和当前代码冲突,Git 会提示冲突,需要手动解决后才能继续。

  3. stash 不是永久备份
    虽然它存在本地,但还是建议重要修改尽早正式提交。git stash clear或重新 clone 都会让它消失。

  4. 想给 stash 改名
    Git 本身不支持直接改名,但可以用:

    git stash store -m "新的说明" $(git rev-parse stash@{0}) git stash drop stash@{1} # 把旧的删掉

5. 推荐的日常工作流

# 1. 开始工作时先看看有没有残留的 stash git stash list # 2. 临时需要切分支或修 bug git stash save "当前工作进度说明" # 3. 处理完其他事后 git stash pop # 4. 如果 pop 产生冲突,解决完再提交 git add . git commit -m "继续完成之前的功能"

总结

  • git stash= 把工作区修改临时藏起来
  • git stash list= 看看藏了哪些
  • git stash pop= 取出来并删除记录(最常用)
  • git stash apply= 只取出来,保留记录
  • 记得加-u才能把新文件一起藏起来

掌握这几个命令后,你再也不用因为“有未提交修改”而烦恼了。工作区随时可以保持干净,需要的时候再把进度拿回来继续。

试试看,你会发现它是 Git 里最实用的命令之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 23:30:58

低秩矩阵恢复算法工具箱:从SVT到TNNR-ADMM的工程实践

简介:本资源是一套面向信号处理、计算机视觉与机器学习方向研究者及高年级本科生的低秩矩阵恢复算法实践工具包,聚焦SVP、SVT、Sp-lp与TNNR-ADMM四类经典方法,解决图像去噪、视频背景建模、推荐系统矩阵补全等实际场景中的低秩结构重构问题。…

作者头像 李华
网站建设 2026/9/5 23:29:04

ECI增速翻倍:推理模型如何重塑AI能力增长与工程应对

看到 Epoch AI 那张横轴是年份、纵轴是 ECI 指数的曲线图,我相信不少人和我一样,第一反应不是“涨得真快”,而是“这个斜率是不是画错了”。过去两年大家习惯了另一种叙事:大模型参数越来越大,数据却快用完了&#xff…

作者头像 李华
网站建设 2026/9/5 23:28:53

LeRobot 数据增强完整指南:快速让机器人视觉更鲁棒

LeRobot 数据增强完整指南:快速让机器人视觉更鲁棒 【免费下载链接】lerobot 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 如果你的抓取策略在实验…

作者头像 李华
网站建设 2026/9/5 23:25:22

基于YOLOv8的超市货架空置检测:从数据集解析到模型部署实战

简介:本资源是面向零售智能运维与计算机视觉初学者的货架空置及缺货检测专用数据集,聚焦超市补货场景下的目标检测任务,适用于YOLO、Faster R-CNN等主流模型训练与算法验证。压缩包共2000个文件,含1999个Pascal VOC格式XML标注文件…

作者头像 李华
网站建设 2026/9/5 23:19:14

OpenCV-Python人脸识别实战:从数据采集到模型训练与部署

简介:本资源是一套面向Python初学者与计算机视觉入门者的OpenCV人脸模型训练与识别实践项目,聚焦人脸识别核心流程——从本地图片样本训练、模型生成,到单图识别与摄像头实时检测的完整闭环。资源包共341个文件,以305个Python脚本…

作者头像 李华