phpstorm 的 git stash 实质是调用 git stash push,数据存于 .git/refs/stash,跨 ide 和设备有效;默认仅暂存已跟踪文件,新增未跟踪文件需勾选“include untracked files”且不受 .gitignore 影响。

PhpStorm 的 Git Stash 不是 IDE 自己存的“草稿”,而是实打实调用 git stash push,和你在终端敲命令完全等价——stash 存在 .git/refs/stash 里,换 VS Code、换电脑都能用。
点「Stash Changes」却没反应?先看这三类常见卡点
不是 PhpStorm 坏了,大概率是 Git 层面拒绝操作:
- 文件被
.gitignore或.git/info/exclude忽略了,PhpStorm 直接跳过,也不提示 - 你改的是二进制文件(比如
logo.png),且没配 Git 的 diff 工具,PhpStorm 判定“无文本变化”,不许 stash - 当前工作区有未解决的合并冲突(
git status显示Unmerged paths),git stash命令本身就会失败,PhpStorm 只静默退出
新增文件没进 stash?必须手动勾选「Include untracked files」
默认情况下,PhpStorm 只 stash 已跟踪文件(即之前 commit 过的)的修改。刚新建的 config.local.php、tmp/test.js 这类未 git add 的文件,不会被包含。
PhpStorm 2026.1 Mac 版已针对 Apple Silicon(M1/M2/M3/M4)芯片进行原生优化,实现了极速启动与流畅运行。该版本不仅深度适配 Laravel 13 与 Livewire 框架,还创新性地集成了 MCP 服务器,允许开发者直接在 IDE 内调用 Claude Code 等 AI 智能体辅助编程。配合优化的索引机制与 macOS 原生界面风格,它为 Mac 用户
- 点「Stash Changes」弹窗右下角,勾选
Include untracked files—— 对应命令行的git stash push -u - 如果勾了还是没 stash 成功,检查它是否被
.gitignore拦住了:stash 不绕过 ignore 规则 - 想连
.gitignore里的文件也一起暂存?得切 Terminal 执行git stash push -a,PhpStorm GUI 不支持
恢复时只 apply 不 pop,避免误删 + 支持多分支复用
「Unstash Changes」面板里点击某条记录右侧的 Apply Stash,等价于 git stash apply stash@{2} —— 内容恢复,但 stash 保留在栈中。
- 适合反复试验:apply 后发现不对,直接丢弃当前工作区再重来,原 stash 还在
- 想把同一条 stash 应用到多个分支(比如
main和feature/login),只能用apply,pop会立刻删掉它 - 如果 apply 后出现冲突,PhpStorm 不主动高亮,得靠
git status查哪些文件标了Unmerged paths,手动解决后再git add
stash 列表太多?别靠眼睛数 stash@{0},用描述和 show -p 定位
光看 stash@{0}: WIP on main: abc1234 根本不知道这次 stash 改了啥。容易误 drop,也难排查问题。
- 每次 stash 都加
-m描述:git stash push -m "api: add retry logic for 503",git stash list就一目了然 - 描述里别用空格开头、emoji 或方括号(如
[WIP]),Git 解析可能出错 - 不确定某条 stash 是否含关键改动?终端执行
git stash show -p stash@{1},直接看到增删的代码行
最常被忽略的一点:stash 栈是全局的,不绑定分支。切分支不会自动 apply,也不会自动清理;stash@{0} 总是最新一次,但来源分支可能和当前分支完全不同——apply 时文件重命名或删除可能导致部分变更静默丢失,PhpStorm 不提醒。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










