一、什么是 git stash
git stash
是 Git 中用于临时保存当前工作区(working directory)和暂存区(staging area)改动的命令。它将当前未提交的更改保存起来,并还原为一个干净的工作目录,方便你切换分支、修复 Bug 或执行其他任务。
二、常用命令大全
命令 | 作用 |
---|---|
git stash |
保存当前修改到栈中(不包含 untracked 文件) |
git stash -u / --include-untracked |
包括未追踪文件一起保存 |
git stash -a / --all |
包括忽略文件(.gitignore)也一起保存 |
git stash list |
查看所有 stash 项 |
git stash pop |
应用最近一个 stash 并将其从列表中移除 |
git stash apply |
应用某个 stash(不会移除) |
git stash drop stash@{n} |
删除指定 stash |
git stash clear |
清空所有 stash |
三、指定命名的 stash
语法:
git stash push -m "你的命名说明"
示例:
git stash push -m "feat: 临时保存生成按钮风控逻辑改动"
命名后查看:
git stash list
# 输出示例
stash@{0}: On main: feat: 临时保存生成按钮风控逻辑改动
四、应用与查看 stash 内容
应用最近一个 stash:
git stash pop
应用指定 stash 而不删除:
git stash apply stash@{1}
查看某个 stash 的差异:
git stash show -p stash@{0}
五、典型使用场景
- 临时切分支修 bug:
git stash push -m "fix: 保存当前开发状态"
git checkout bugfix/urgent-issue
- 合并代码失败,先清理现场:
git stash -u
# 合并代码
# 合并后恢复改动
git stash pop
- 多个 stash 管理:
# 多个 stash 管理并指定命名,避免混乱
六、命名建议模板
类型 | 示例命名 |
---|---|
feat |
feat: 保存 AI 生成功能重构中间态 |
fix |
fix: 修复 stash 弹窗验证未触发问题 |
wip |
wip: 临时保存组件重构未完成部分 |
refactor |
refactor: 优化风控校验逻辑 |
七、常见注意事项
- 默认不包含 untracked 文件,需加
-u
stash pop
会删除 stash,使用apply
更安全- 不建议 stash 太多次未命名内容,易混淆
- stash 恢复后可能出现冲突,要小心处理
八、建议配置 alias(可选)
git config --global alias.sta "stash push -m"
git config --global alias.stl "stash list"
git config --global alias.stp "stash pop"
git config --global alias.sta-all "stash push -u -m"
之后可直接用:
git sta "wip: 保存当前开发状态"
git stl
git stp