是的,git stash -u 要谨慎用,有几个坑:
-u 的风险
-u (--include-untracked) 会把未跟踪的新文件也一起 stash 进去,风险在于:
- stash 之后这些文件从工作区消失
- 如果之后
git stash drop或 stash 被覆盖,文件就真的没了 - 有时候 stash list 里看起来有,但 pop 出来文件位置不对
更安全的做法
日常切换分支,优先用:
git stash # 只 stash 已跟踪的修改,新文件保留在工作区
新文件想一起保存,先 add 再 stash:
git add .
git stash # 这样新文件也进 stash,且有记录
或者用分支保存现场:
git checkout -b temp/save-work # 开个临时分支
git add .
git commit -m "wip: save" # 提交保存,最安全
总结
| 方法 | 安全性 | 推荐度 |
|---|---|---|
git stash | ⭐⭐⭐ | 日常用 |
git add . && git stash | ⭐⭐⭐⭐ | 推荐 |
git stash -u | ⭐⭐ | 少用 |
| 临时分支 commit | ⭐⭐⭐⭐⭐ | 最安全 |
文件丢了找不回来是真的很痛,养成 add 再 stash 的习惯最稳。