贮藏
Stash
中级通用贮藏(Stash)是 Git 把尚未提交的改动临时收起来、留待之后恢复的功能。你写网站写到一半却要切去修线上问题时,可以先贮藏当前改动,回来再接着做。
你可能会说:「我页面只写到一半,现在得先修别的问题,能不能把这些改动先收起来,回来再继续?」
动手看看做登录页时插队修线上问题
1
网站已经上线,main 上有首页和导航的提交。现在要开始做登录页。
要点贮藏怎样帮你暂停手头工作?
- 1
改动暂存而不是提交
你执行贮藏后,Git 会保存当前改动,让工作区腾出空间处理别的事。它适合暂时中断的工作,而不是给一个已经完成的功能留下正式记录。
- 2
新建文件需要额外留意
默认贮藏会收起已跟踪文件的改动,包括已暂存和未暂存的部分;新建但未被跟踪的文件默认不会收进去。如果你的页面还新增了组件文件,可以用 git stash push -u 一起保存。
- 3
回来后可以恢复改动
用 git stash apply 可以恢复改动并保留贮藏记录;用 git stash pop 则会在成功恢复后移除那条记录。恢复时如果文件已经变了,也可能发生冲突,所以回来先看看 Git 报告的状态。
容易混淆的地方
贮藏和提交都能让你以后找回改动,但提交是项目历史的一部分,贮藏更像给当前工作按暂停键。分支则用来隔离一条工作线:如果你要持续开发一个功能、需要分享进度,用分支配合提交更合适;贮藏适合短暂切走再回来。
什么时候用
适合用
- 你正改后台列表页,突然要切到另一分支修紧急问题,想先收起尚未完成的改动。
- 你让 AI Agent 改了一半登录页,想先查看干净工作区里的测试结果,稍后再恢复这些修改。
- 你准备拉取同事的更新,但当前有未提交的改动,想先临时收起,再处理更新后的差异。
不适合用
- 一个功能已经做完,想留下可追溯的版本记录时,用提交,而不是长期放在贮藏里。
- 你要同时长期推进两个功能,频繁在两边切换时,用分支或独立工作树来隔离工作。
- 你需要把改动交给同事审查或接手时,放到分支上提交并推送,而不是依赖本地贮藏。
练一练选一个答案,看看解释
你正在做网站首页,改了已跟踪的页面文件,还新建了一个未跟踪的组件文件。现在要切去修线上问题,回来后还想继续做首页。怎么处理更贴近这个目标?
让 AI 帮你做复制给 AI Agent 直接用
我要暂时切走修另一个问题。请先运行 git status,说明哪些是已跟踪改动、哪些是未跟踪文件;确认后用带说明文字的 git stash push -u 贮藏当前工作,不要丢弃改动。修完后提醒我恢复贮藏,并检查是否有冲突。