干净 · login.tsx 已不在这里
版本协作 · 版本协作
暂存修改Stash
stash 把未提交改动压进本地临时栈,工作区变干净后才能安全切分支;回来再 pop 或 apply 取回,它不进历史也不在远程。
先认出这只搁置架,再决定能不能切分支
下面就是工作区和 stash 架子。默认改动已压栈、工作区干净;pop 遇到底层移动会冲突,但架子上的条目还在;解决后才能取回并出栈。
第 0 步先打开:终端跑 git stash list,或看编辑器 Source Control 的 Stash。下面是工作区和那只架子。
stash@{0}登录页未完成的错误态login.tsx · form.css
已 push · 工作区干净
改动压进 stash@{0}。可以安全切去修线上。回来再 pop。
原因:未提交改动会挡住切分支。下一步:看 pop 遇到底层移动会怎样失败,或直接取回。
知识点:临时栈,不是 checkpoint
架子和工作区刚演过的四件事。
- stash 是 LIFO 栈:push 入栈让工作区变干净,pop 取回并出栈。
- apply 取回但留栈;drop 只丢弃栈顶。
- 它不进历史、不在远程;untracked 要
-u才会被搁置。 - 底层分支动过再 pop,可能冲突;失败时 stash 保留,方便重试。
什么时候用、怎么用
切上下文救急,不要当备份盘。
- 信号:手上有未完成改动,却必须立刻切分支修线上。
- 最短路径:
git stash push -u -m 说明→ 确认 status 干净再切 → 回来stash show -p再 pop。 - 不适用:要跨设备或长期保存,就 commit 到 WIP 分支,别把 stash 堆成仓库。
正反例:同一处登录改动,搁置方式不同
都要切去修线上,只改有没有说明和 -u。
untracked 的 notes.md 也进栈。回来能认出这层,pop 后跑测试。
栈上堆着无名条目,换电脑找不到;冲突时还以为条目丢了。
快速自测
切去修线上之前,工作区有 login.tsx 和未跟踪的 notes.md。怎样搁置才安全?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。