讲师中心 微信公众号
AI工具推荐 视频效率加速

详细介绍Git临时保存分支修改之git stash(开发利器)

浅婷酱_8732

浅婷酱_8732

发布时间:2026-06-30 09:02:31

|

879人浏览过

|

来源于php中文网

原创

git stash push -m 是当前唯一推荐的保存方式,替代已弃用的 git stash save;它支持 -u(含未跟踪文件)、--keep-index 等参数,且带描述信息便于识别 stash 内容。

详细介绍git临时保存分支修改之git stash(开发利器)

git stash push -m 是当前唯一推荐的保存方式

别再用 git stash save,它从 Git 2.19 开始就被标记为 deprecated,只是兼容性保留。新项目或团队协作中统一用 git stash push -m,否则会踩坑:比如想包含未跟踪文件时加 -u 参数,git stash save -u 直接报错 “unrecognized argument: -u”。

实际操作中,描述信息不是可选装饰——stash 列表里全是 stash@{0} 这种编号,过两天根本记不清哪条对应哪个功能。加 -m 后,git stash list 输出就能一眼识别:

stash@{0}: On feature/login: WIP: add password strength check
stash@{1}: On main: fix: typo in error message
  • git stash push -m "WIP: login UI" —— 默认只存已跟踪文件的修改
  • git stash push -u -m "WIP: login UI + config files" —— 加 -u 才会把新增但未 git add 的文件也暂存
  • git stash push --keep-index -m "WIP: partial refactor" —— 暂存工作区修改,但保留暂存区原样(适合只想 stash 未 add 的部分)

git stash apply 和 git stash pop 的关键区别

恢复 stash 时,git stash pop = git stash apply + git stash drop,但这个“自动删除”不是原子操作:如果恢复过程发生冲突,pop 会失败并中止,stash 还在栈里;而 apply 即使冲突也照常执行,stash 始终保留。

这意味着:pop 更适合确定无冲突的干净场景;apply 更安全,尤其当你不确定当前工作区是否干净、或者想反复测试某次 stash 内容时。

  • 想试完就删:用 git stash pop
  • 想保留 stash 备份,或准备多次 apply 同一个 stash:必须用 git stash apply
  • 恢复指定 stash(比如第二条):git stash apply stash@{1},注意编号从 0 开始,stash@{0} 是最新一条

stash 冲突时该怎么处理

stash 恢复本质是一次三方合并(base 是 stash 创建时的 HEAD,ours 是当前工作区,theirs 是 stash 内容),所以冲突和 git merge 一样要手动解决。但很多人忽略一点:冲突后 git status 显示的是 “both modified”,而不是 “unmerged paths”,容易误以为没冲突。

alfred-github-backup
alfred-github-backup

GitHub 仓库备份技能 - 将 OpenClaw 工作空间自动或手动备份至 GitHub 私有仓库。支持自动定时备份和手动交互式配置,引导完成 Token 配置、仓库创建、首次备份及定时任务设置。用途:(1) 首次设置 (2) 日常备份。

下载

真正要盯住的是命令行输出——只要看到 “Auto-merging xxx” 后跟 “CONFLICT” 字样,就必须立刻 git add 解决后的文件,再 git stash drop(如果是 apply)或等 pop 自动完成。

  • 冲突文件会进入工作区,内容含
  • 解决后别忘了 git add <file>,否则 git stash drop 会拒绝执行(Git 认为还有未处理修改)
  • 如果想放弃这次恢复:git reset --hard 回退到恢复前状态,再 git stash drop stash@{0} 清理掉已失效的 stash

stash 不是长期备份,别依赖它跨周保存

stash 存在本地 Git 仓库的 reflog 中,不参与 git push,也不会同步到远程。一旦执行 git stash clear 或 reflog 过期(默认 30 天),所有 stash 就彻底消失,连 git fsck 都找不回来。

更隐蔽的风险是:stash 基于创建时的 commit ID,如果那个 commit 被 rebase 或 filter-branch 删除,stash 就变成“悬空引用”,git stash show 可能报错,apply 也可能应用到错误上下文。

所以,超过一天的临时修改,建议至少做一次 git commit -m "wip: xxx" 并推送到个人分支——stash 只负责小时级上下文切换,不是替代 commit 的方案。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

相关专题

更多
自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

5239

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

1600

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

914

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3417

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3081

2024.04.09

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

160

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

80

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

60

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

40

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 7.9万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn