
对比项git stashgit commit不 push主要用途临时切分支、临时处理中断稳定保存一个开发阶段是否属于分支历史不属于分支提交历史属于当前分支历史是否上传远端不会不会除非执行git push下次恢复git stash apply/popgit switch 分支名恢复顺序依赖stash{0}等动态序号通过分支和提交哈希固定定位冲突风险应用到变化后的代码时容易冲突切回原分支通常直接恢复完整状态未跟踪文件默认不保存需要-ugit add后可以提交查看改动相对不直观可通过git log/show/diff清晰查看保存可靠性适合短期不适合长期堆放更适合长期、稳定保存是否方便撤销可以drop可用reset、revert、rebase等处理Git StashGit StashTemporary storage临时保存它更像是一个临时储物柜。Git 会做两件事情把当前修改打包成一个特殊的 Commit恢复工作区到干净状态。基本操作// 暂存当前的更改文件 git stash push -u -m 临时保存布局修改 // 切换回分支需要恢复切换前的数据 git stash popgit stash push -u -m 临时保存布局修改作用暂时保存已跟踪文件修改。-u同时保存未跟踪文件。保存后清理工作区方便切换分支。恢复1.只恢复不删除 stashgit stash apply stash{0}2. 恢复成功后删除 stash发生冲突时通常保留。git stash pop stash{0}优点快速清空工作区。不会产生临时开发提交。适合修改只需要放几分钟或几小时的情况。适合临时处理线上问题后马上回来继续。缺点stash 是整个仓库共用的列表不真正绑定某个分支。stash{0}会随着新增、删除 stash 而改变。多份 stash 堆在一起后容易恢复错。默认不包含未跟踪文件。长时间保存后不容易知道每份 stash 的具体内容。在代码基线变化后恢复容易出现冲突。drop或clear后恢复更麻烦不适合作为长期备份。如果某天切回的暂存不是上次最新的更改怎么办整个恢复过程其实可以概括为四个步骤确认目标通过git stash list找到需要恢复的 Stash并确认其中包含自己需要的文件。确认环境检查当前分支、工作区状态以及 Stash 的创建基准确保恢复不会引入不必要的冲突。先备份再恢复恢复之前先将当前工作区再次stash一份作为保险然后使用git stash apply恢复目标 Stash而不是直接使用pop。恢复后验证通过git diff和git stash list验证恢复结果确认代码已恢复同时原始 Stash 和备份 Stash 都仍然保留。指令作用git status --short --branch --untracked-filesall确认当前所在分支并查看工作区所有修改包括未跟踪文件git stash list --datelocal查看所有 stash 及创建时间确认目标 Stashgit show --stat --oneline --summary stash{0}查看目标 Stash 包含哪些已跟踪文件而不恢复代码git stash show --include-untracked --name-status stash{0}检查 stash 中的未跟踪文件git diff --name-status a92c5xxx比较当前工作区与目标 stashgit log -5 --oneline --decorate查看当前分支最近几次提交确认 HEAD 所在位置git show -s --format... a92c5xxx查看 Stash 的元信息包括它基于哪个提交创建git stash push --include-untracked -m 自动备份恢复 2026-07-21 19:04:51 前在恢复旧 Stash 之前先备份当前工作区的所有修改和未跟踪文件git stash apply --index a92c527d9f680xxxx...根据指定哈希恢复昨天的 Stash并恢复原来的暂存状态Stagegit diff --name-status a92c5xxx...恢复后再次比较没有输出说明已跟踪文件与目标 stash 完全一致git stash list --datelocal确认上次的原 stash 和今天的自动备份都还在git commit ,但不push基本操作此时提交只存在本地不会自动上传 GitLab/GitHub。git add src/layout git commit -m feat(layout): 保存导航布局改版进度切换到其他分支git switch master下次切回继续做git switch layout_test优点修改明确保存在layout_test分支上。提交哈希固定不受 stash 序号变化影响。切回分支就是完整代码不需要重新 apply/pop。可以清晰查看每次保存的内容git log --oneline git show 提交哈希可以继续修改、合并、拆分、撤销。在没有 push 前可以使用commit --amend或交互式 rebase 整理提交。缺点会产生提交记录临时保存过于频繁时历史可能零碎。后续推送前可能需要整理 WIP 提交。如果误提交.env.local、密码或本地配置之后直接 push 会一起上传。只保存在本机电脑或磁盘损坏仍可能丢失它不是远程备份。