摘要

代码写到一半,突然要切换分支修bug——你是直接 commit 一个"临时保存",还是眼睁睁看着未提交的代码消失?

如果你还不会用 git stash,这篇文章能帮你省掉 80% 的"代码找回"麻烦。学完本文,你能做到:

  • 随时暂存当前工作区,干净切换分支
  • 在多个暂存记录间自由切换
  • 解决 stash 冲突、恢复误删的 stash
  • 配合 EasyClaw 等AI 工具,让 Git 操作不再靠死记硬背

前置条件:安装了 Git(任意版本),有基础的 commit/branch操作经验即可。
如果不想自己全程手动保存,可以用Easyclaw去进行操作(后附EasyClaw教程)。

Easyclaw自动保存和查询命令工具


一、git stash 是什么,为什么需要它

git stash(暂存/藏匿)是 Git 提供的一个"临时抽屉"机制。它能把你当前未提交的修改(包括工作区和暂存区)打包压入栈,让工作区恢复到上次提交时的干净状态,之后随时可以取回。

典型使用场景

场景 不用 stash 用 stash
切分支修紧急 bug 被迫提交半成品 commit stash 暂存,切分支,改完再恢复
拉取远程更新 pull 报冲突无法执行 stash → pull → stash pop
尝试新思路 手动备份文件 stash 保存现场,随时可回退
多任务并行 开多个工作目录 用 stash list 管理多份暂存

一句话总结:git stash 是 commit 的轻量替代,专门处理"不该提交但不能丢"的代码


二、工具准备

操作系统自带的 Git 命令行就够用,但如果你想让 Git 命令不再靠"查文档"记忆,推荐提前装好 AI辅助工具。

没有 EasyClaw 时:每次想不起来 git stash popgit stash apply 的区别,就得打开浏览器搜,翻到答案再回来,前后起码 5 分钟,一天下来能被打断十几次。

有了 EasyClaw 之后,在桌面端直接问"git stash pop 和 apply 有什么区别",3秒出答案,点击左下角小星星收藏常用 Git 命令,下次直接调用,完全不用离开工作界面。安装后在技能商店搜索"Git 助手"技能包,开箱即用,不需要配置任何环境变量。


三、核心步骤:git stash 完整操作流程

步骤一:暂存当前修改

最基础的用法:

git stash

执行后,Git 会把所有已追踪文件的修改压栈,工作区恢复干净。

如果你想给这次暂存加一个备注(强烈推荐!否则以后 stash list 里一堆 WIP on main,完全分不清):

git stash push -m "feat: 用户登录模块,写到一半"

如果还有新建但未 git add的文件(untracked files)也要一起暂存:

git stash push --include-untracked -m "含新文件的暂存"
# 简写
git stash -u -m "含新文件的暂存"

场景对话

同事:你的登录功能写好了吗?线上有个支付bug 要你帮忙看一下。

你:稍等,我先把手头的代码存一下。

git stash push -m "login: 表单验证写到一半"
git checkout hotfix/payment-bug

同事:这么快?

你:git stash,存起来了,改完支付 bug 再切回来取。


步骤二:查看暂存列表

git stash list

输出示例:

stash@{0}: On main: login: 表单验证写到一半
stash@{1}: On feature/search: 搜索功能临时保存
stash@{2}: WIP on main: abc1234 fix typo

stash@{0} 是最新的一条,stash@{n} 的数字越大越旧。

查看某条 stash 具体改了什么:

git stash show stash@{1}           # 简要diff(文件列表)
git stash show -p stash@{1}        # 详细 diff(逐行变更)

步骤三:恢复暂存

方式一:pop(取出并删除)

git stash pop               # 取出最新一条 stash@{0}
git stash pop stash@{2}     # 取出指定位置

pop =取出 + 从列表删除,适合一次性恢复,不想留存记录。

方式二:apply(取出但保留)

git stash apply             # 取出最新,但stash 列表里还在
git stash apply stash@{1}   # 取出指定位置,保留记录

apply 适合需要把同一份暂存应用到多个分支的情况。

命令 恢复代码 保留 stash 记录 适用场景
stash pop 一次性恢复,不需要复用
stash apply 多分支复用同一份暂存

步骤四:删除暂存记录

git stash drop stash@{0}    # 删除指定一条
git stash clear             # 清空全部 stash(谨慎!)

注意stash clear 不可撤销,清空前先用 git stash list 确认一下。


步骤五:从stash 创建新分支

这是一个很实用但容易被忽略的功能。当你暂存的代码量比较大,直接 pop 可能产生冲突,可以先开一个新分支来接收:

git stash branch new-feature stash@{0}

这条命令会:

  1. 基于 stash 创建时的 commit,切出 new-feature 分支
  2. 自动 apply 该stash
  3. 从列表中删除该 stash

四、处理 stash 冲突

stash pop/apply 时如果当前分支也改了同一行代码,会产生冲突:

CONFLICT (content): Merge conflict in src/login.js
The stash entry is kept in case you need it again.

解决步骤:

# 1. 打开冲突文件,手动解决 <<<< ==== >>>> 标记
# 2. 标记为已解决
git add src/login.js

# 3. 如果是 pop 触发的冲突,stash 记录不会自动删除,手动清理
git stash drop stash@{0}

五、进阶技巧

只暂存部分文件

git stash push src/login.js src/utils.js -m "只存这两个文件"

只暂存工作区,不暂存已git add 的内容

git stash push --keep-index -m "保留staged 内容"

暂存时包含被忽略的文件(.gitignore 内)

git stash push --all -m "含ignored 文件"

六、常见问题 Q&A

Q:git stash 之后切了分支,回来发现 stash 不见了?

A:stash 是全局的,不属于某个分支,git stash list 在任何分支都能看到。"不见了"通常是因为用了 pop 恢复后自动删除了,或者用了 clear

Q:stash pop 之后代码出现冲突,怎么取消恢复?

A:解决冲突后继续推进即可;如果想完全撤销,用 git checkout -- . 放弃工作区改动(前提是 stash 记录还在)。

Q:stash 里的内容会丢失吗?

A:只要没有执行 drop / clear,stash 会一直保留在本地 .git 目录里,不会因切换分支或重启消失。但git gc(垃圾回收)可能会清理悬空对象,建议重要的暂存尽快 pop或转为正式commit。

Q:pop 和 apply 都失败了,报"no changes",是什么原因?

A:可能是 stash 内容和当前工作区完全一致,Git 认为无需 apply。用 git stash show -p stash@{0} 确认内容后,再检查当前工作区状态。

Q:在 Windows 上用 git stash push -m “备注” 报编码错误?

A:在 CMD 里把备注改为英文,或者用 Git Bash 执行,Git Bash 对 UTF-8 支持更好。


七、总结

  1. 日常切换分支前,先 git stash push -m "描述" 保存现场,切回来再 git stash pop
  2. stash pop 和 apply 的核心区别:pop 用完即删,apply 保留记录可复用。
  3. 新建未追踪文件记得加 -u 参数,否则这些文件不会被暂存。
  4. stash 产生冲突时不要慌,手动解决冲突文件后git add,再手动 drop记录。
  5. stash list 里超过 5 条就该清理了,养成加备注的习惯,避免误删重要暂存。

如果你觉得 Git 命令还是太多记不住,立刻免费体验 EasyClaw——在桌面端直接用自然语言问Git 操作,比翻文档快 10 倍,再也不用为忘命令而中断思路。
Easyclaw官网:https://easyclaw.cn/?f=460
Easyclaw使用教程
安装技能包
请添加图片描述
如何使用技能请添加图片描述
输入你想查询的指令请添加图片描述

结果请添加图片描述
记住AI只是辅助工具有时也会犯错,它只能提供参考要仔细观察避免错误

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐