Stash vs Backup(分支备份)不一样!
📊 核心区别对比:
| 特性 | Stash(暂存) | Backup(分支备份) |
|---|---|---|
| 存储内容 | 仅存储工作目录和暂存区的修改 | 存储整个分支状态(提交历史) |
| 存储方式 | 特殊的 stash 堆栈(隐藏的) | 一个真实的分支 |
| 可见性 | git stash list 查看 |
git branch 查看 |
| 恢复方式 | git stash pop 或 git stash apply |
git checkout backup |
| 安全性 | 较低,可能被清理或覆盖 | 较高,是完整分支 |
| 用途 | 临时切换任务 | 长期保存状态 |
🎯 使用场景对比:
适合用 Stash 的情况:
bash
# 场景:正在写功能A,突然要修复紧急bug
git stash # 保存当前修改到"抽屉"
git checkout master # 切换到其他分支
# 修复bug...
git checkout feature-a
git stash pop # 从"抽屉"拿出之前的修改
适合用分支备份的情况:
bash
# 场景:做了大量更改,想保存当前状态
git branch backup-before-experiment # 创建备份分支
# 继续实验性修改...
# 如果实验失败:
git reset --hard backup-before-experiment
💡 关键区别举例:
Stash 示例:
当前状态:修改了3个文件(未提交)
git stash → 3个文件的修改被"打包"存起来
工作目录变干净了
git stash pop → 修改被"拆包"恢复
分支备份示例:
当前状态:有5个提交
git branch backup → 创建backup分支指向当前提交
继续开发...
想回退时:git reset --hard backup
⚠️ Stash 的局限性:
- 没有提交历史:只是一个快照
- 可能丢失 :
git stash clear或过期会被清理 - 没有分支信息:不包含分支结构
- 冲突风险:恢复时可能与当前代码冲突
✅ 简单判断:
- 临时保存几小时 → 用
stash - 长期保存几天/几周 → 用
branch backup - 重要代码 → 一定要用分支备份!
你的 refs/stash 就是有人用了 git stash 命令存了一些未提交的修改。