跳到正文

贮藏

Stash

中级通用

贮藏(Stash)是 Git 把尚未提交的改动临时收起来、留待之后恢复的功能。你写网站写到一半却要切去修线上问题时,可以先贮藏当前改动,回来再接着做。

你可能会说:「我页面只写到一半,现在得先修别的问题,能不能把这些改动先收起来,回来再继续?」

读之前建议先了解

动手看看

main当前所在 HEADfeature/login首页上线添加导航main · HEAD
1

网站已经上线,main 上有首页和导航的提交。现在要开始做登录页。

要点

  1. 1

    改动暂存而不是提交

    你执行贮藏后,Git 会保存当前改动,让工作区腾出空间处理别的事。它适合暂时中断的工作,而不是给一个已经完成的功能留下正式记录。

  2. 2

    新建文件需要额外留意

    默认贮藏会收起已跟踪文件的改动,包括已暂存和未暂存的部分;新建但未被跟踪的文件默认不会收进去。如果你的页面还新增了组件文件,可以用 git stash push -u 一起保存。

  3. 3

    回来后可以恢复改动

    用 git stash apply 可以恢复改动并保留贮藏记录;用 git stash pop 则会在成功恢复后移除那条记录。恢复时如果文件已经变了,也可能发生冲突,所以回来先看看 Git 报告的状态。

容易混淆的地方

贮藏和提交都能让你以后找回改动,但提交是项目历史的一部分,贮藏更像给当前工作按暂停键。分支则用来隔离一条工作线:如果你要持续开发一个功能、需要分享进度,用分支配合提交更合适;贮藏适合短暂切走再回来。

什么时候用

适合用

  • 你正改后台列表页,突然要切到另一分支修紧急问题,想先收起尚未完成的改动。
  • 你让 AI Agent 改了一半登录页,想先查看干净工作区里的测试结果,稍后再恢复这些修改。
  • 你准备拉取同事的更新,但当前有未提交的改动,想先临时收起,再处理更新后的差异。

不适合用

  • 一个功能已经做完,想留下可追溯的版本记录时,用提交,而不是长期放在贮藏里。
  • 你要同时长期推进两个功能,频繁在两边切换时,用分支或独立工作树来隔离工作。
  • 你需要把改动交给同事审查或接手时,放到分支上提交并推送,而不是依赖本地贮藏。

练一练

你正在做网站首页,改了已跟踪的页面文件,还新建了一个未跟踪的组件文件。现在要切去修线上问题,回来后还想继续做首页。怎么处理更贴近这个目标?

让 AI 帮你做

我要暂时切走修另一个问题。请先运行 git status,说明哪些是已跟踪改动、哪些是未跟踪文件;确认后用带说明文字的 git stash push -u 贮藏当前工作,不要丢弃改动。修完后提醒我恢复贮藏,并检查是否有冲突。

接下来学什么