Git 指南
Git stash:保存更改、切换分支并恢复您的工作
紧急修复中断了未完成的工作。使用 Git stash 保存它,稍后恢复正确的条目,并在单击之前了解应用、弹出和冲突。包括视觉 GitTree 演练。
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 statusGit 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 中的更改
检查正在进行的工作
打开
// WIP行,查看文件并选择 Commit 旁边的 Stash 选项卡。选择范围
选择“所有更改”、“仅暂存的更改”或“仅选定的文件”。启用当新文件属于任务时包括未跟踪的文件。
给它一个任务名称
输入消息,例如 WIP:结帐表单,然后选择“存储”。在切换分支之前检查遗留的所有文件;部分隐藏并不能清除所有工作。
恢复前预览
在“Stashes”部分中,右键单击正确的条目并选择“Show Stash”以检查其文件和差异。检查接收分支是否正确。
申请、审核并完成
选择“应用隐藏”以保留该条目,或选择“弹出隐藏”以在成功后将其删除。检查更改、运行测试并在准备好后提交。

想要对您自己的存储库执行这些步骤吗? 下载 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日 的官方页面进行了检查。价格和功能发生变化;供应商的页面是事实的来源。