跳至内容
GitTree

Git 指南

Git stash:保存更改、切换分支并恢复您的工作

紧急修复中断了未完成的工作。使用 Git stash 保存它,稍后恢复正确的条目,并在单击之前了解应用、弹出和冲突。包括视觉 GitTree 演练。

撰写者 Kodmora已更新 阅读 1 分钟

Git stash 会保存未提交的更改,以便您可以处理其他事情,然后将这些更改恢复。 从 git stash push -m "WIP: checkout form" 开始;当您想要保留已保存的条目时,请使用 git stash apply 进行恢复;当您想要在成功恢复后将其删除时,请使用 git stash pop 进行恢复。当新的、未跟踪的文件也属于该作品时,请添加 -u。

本指南使用结帐表单中断作为示例:暂停表单,修复另一个分支上的生产错误,然后返回表单。视觉演练使用了 GitTree,即我们为 macOS、Windows 和 Linux 制作的客户端。存储管理包含在免费计划中;当前的官方版本需要登录。

何时使用存储、提交或工作树

选择如何暂停工作
情况使用原因
因未完成的编辑而短暂中断藏匿暂时清除文件而不添加普通分支提交
您需要远程共享或备份的工作提交并推送到适当的分支藏品留在本地;正常推送不会上传它们
您想同时打开两个任务工作树每个任务都有自己的工作文件夹

对于较长的并行任务,请使用 worktree 指南。存储是方便的临时存储,但不应该是您有价值的工作的唯一备份。在任务后面命名条目,因为 stash@{0} 表示最新条目,并且数字会随着列表的变化而变化。

保存更改并切换分支:完整示例

首先检查 git status:默认存储包含对跟踪文件的修改,包括分阶段编辑,但保留未跟踪和忽略的文件。在此示例中,表单包含一个新创建的文件,因此请使用 -u。这些命令假设 feature/checkout 和 hotfix/payment 已经存在;替换您自己的分支名称。

git status
git stash push -u -m "WIP: checkout form"
git stash list
git status
git switch hotfix/payment

返回之前完成、测试并提交修补程序。在应用之前检查存储列表及其差异:另一个任务可能同时创建了一个更新的条目。引用诸如 "stash@{0}" 之类的选择器也会阻止 shell 解释其特殊字符。

git switch feature/checkout
git stash list
git stash show -p --include-untracked "stash@{0}"
git stash apply "stash@{0}"
git status

Git stash apply 与 pop:你应该选择哪一个?

恢复藏匿处
命令恢复文件保留藏品
git stash apply "stash@{0}"是的是的
git stash pop "stash@{0}"是的不,成功之后;是的,如果冲突阻止它
git stash apply --index "stash@{0}"是的,并尝试恢复暂存状态是的

对于重要的未完成更改,请先应用、审查并测试它,然后在提交恢复的工作后删除已保存的条目。应用两次可能会产生冲突或重复更改;在重试之前检查工作文件。 apply 和 pop 都不会将任何内容推送到服务器。

隐藏未跟踪的文件、特定文件或分阶段更改

git stash push -u -m "WIP: include new files"
git stash push -m "WIP: checkout only" -- src/checkout.ts
git stash push --staged -m "WIP: staged changes only"
git stash push --keep-index -m "WIP: keep staged work ready"

这些是替代命令,而不是一起运行的序列。 -- 之后的路径将存储限制到该路径。 --staged 仅保存分阶段的更改; --keep-index 保留分阶段的更改,以便您可以测试或提交它们,同时搁置其他编辑。他们解决不同的问题。较旧的 Git 安装可能不支持 --staged;检查 git --version 和您安装的版本的帮助。

如何存储和恢复 GitTree 中的更改

  1. 检查正在进行的工作

    打开 // WIP 行,查看文件并选择 Commit 旁边的 Stash 选项卡。

  2. 选择范围

    选择“所有更改”、“仅暂存的更改”或“仅选定的文件”。启用当新文件属于任务时包括未跟踪的文件。

  3. 给它一个任务名称

    输入消息,例如 WIP:结帐表单,然后选择“存储”。在切换分支之前检查遗留的所有文件;部分隐藏并不能清除所有工作。

  4. 恢复前预览

    在“Stashes”部分中,右键单击正确的条目并选择“Show Stash”以检查其文件和差异。检查接收分支是否正确。

  5. 申请、审核并完成

    选择“应用隐藏”以保留该条目,或选择“弹出隐藏”以在成功后将其删除。检查更改、运行测试并在准备好后提交。

观看“存储”选项卡工作流程:查看更改、命名存储并保存。
观看“存储”选项卡工作流程:查看更改、命名存储并保存。GitTree 与演示存储库的接口。

想要对您自己的存储库执行这些步骤吗? 下载 GitTree,登录并打开存储库文件夹。您现有的存储仍然是普通的 Git 存储,也可以从终端看到。

如何解决 git stash pop 冲突

当目标分支更改相同的行时,存储可能会发生冲突。失败的弹出会保留存储,但某些更改可能已经应用。请勿反复弹出。运行 git status,解析每个未合并的文件,并仅暂存预期的解析。 合并冲突指南 解释了标记和三向编辑器。

git status
git diff --name-only --diff-filter=U
# Edit and test each conflicted file, then stage its resolution:
git add -- src/checkout.ts
git diff --cached
git status

没有 git stash --continue 或 git stash --abort。文件解决后,正常审查并提交。如果您想放弃尝试,请保留应用之前存在的所有工作,并在丢弃任何内容之前检查每个更改的路径。全面硬重置可以删除不相关的编辑。当目的地偏离太远时,git stash branch rescue/checkout "stash@{0}"会在原始基地的新分支上恢复;成功的操作会删除该存储条目。

仅在检查结果后删除存储

在 git stash drop "stash@{0}" 之前再次使用 git stash list:位置可能已更改。 git stash clear 删除整个列表。在普通 Git 中恢复丢失的存储是不确定的,并且取决于其对象是否仍然存在;不要指望以后能找到它。在 GitTree 中,删除存储将已删除的条目保留在恢复快照中,以便撤消可以将其恢复。特定于应用程序的恢复不会使终端删除成为有保证的可恢复操作。有关更广泛的恢复选项,请参阅撤消 Git 错误。

常见问题

git stash 是否保存未跟踪的文件?

默认情况下不是。使用 git stash push -u,或在 GitTree 中包含未跟踪的文件。忽略的文件需要单独选择; -u 不包括它们。

我可以将库存申请到另一个分行吗?

是的。查看目标分支并在那里应用条目。首先查看其差异:存储可能依赖于该分支中缺少的代码。

git stash pop 是否会删除冲突时的存储?

不会。当应用冲突时,Git 会保留该条目。在自行删除条目之前解决并验证工作文件。

存储是否已推送至 GitHub?

普通的 git Push 不会上传存储。如果您需要远程副本,请在适当的分支上提交工作并推送该分支。

GitTree 存储管理是免费的吗?

是的,存储管理是免费计划的一部分。当前的官方版本需要登录; GitTree 此本地 Git 工作流程不需要 Pro。

来源

有关其他产品的声明已根据其位于 2026年10月28日 的官方页面进行了检查。价格和功能发生变化;供应商的页面是事实的来源。