Git 版本控制中 git stash 命令的具体作用是什么?

文章导读
git stash 的核心作用是在不提交代码的前提下,临时保存当前工作区和暂存区的修改,让你能干净地切换分支或处理紧急任务,事后再恢复现场。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
A A

git stash 的核心作用是在不提交代码的前提下,临时保存当前工作区和暂存区的修改,让你能干净地切换分支或处理紧急任务,事后再恢复现场。

先说结论:这是一个现场保护机制,适合开发中途需要切换上下文但不想提交半成品代码的场景。

  • 适合:分支切换、紧急修复、临时保存未完成功能。
  • 先看:执行 git stash list 确认暂存列表,避免覆盖或误删。
  • 建议:恢复后及时清理无用暂存,保持列表整洁。

命令速用版

git stash # 保存当前修改
git stash list # 查看暂存列表
git stash pop # 恢复最近一次并删除
git stash apply # 恢复最近一次但保留
git stash drop stash@{0} # 删除指定暂存 (需指定 ID)
git stash clear # 清除所有暂存

为什么会这样

Git 的设计要求切换分支时工作区必须是干净的,否则可能覆盖未提交的文件。stash 相当于一个临时栈,把你的修改打包存起来,把工作区还原到上一次提交的状态。这样你就能安全地去别的分支干活,干完再回来把包解开,继续之前的工作。

分步处理

1. 保存现场:在当前分支修改了文件但不想提交,运行 git stash。如果有未追踪的新文件,需要加 -u 参数(git stash -u)。

Git 版本控制中 git stash 命令的具体作用是什么?

2. 确认状态:运行 git status,确保工作区显示干净,没有未提交的修改。

3. 切换分支:执行 git checkout 其他分支 处理紧急任务。

4. 恢复现场:回到原分支后,运行 git stash pop 恢复修改。如果担心冲突,建议先用 git stash apply 测试。

怎么验证是否生效

执行 git stash list 能看到保存的记录,格式类似 stash@{0}: WIP on branch...。恢复后,运行 git status 应该能看到之前修改的文件重新出现在未提交列表中。如果用了 pop,列表里对应的条目应该消失。

Git 版本控制中 git stash 命令的具体作用是什么?

常见坑

1. 未追踪文件丢失:默认 stash 不保存新创建但未 add 的文件,需加 -u`--include-untracked`

2. 冲突处理风险:git stash pop 即使遇到冲突也会删除栈顶记录,导致无法重试恢复。建议先用 git stash apply 测试,确认无冲突后再 pop 或手动 drop。

3. 误删风险:git stash clear 会清空所有暂存,无法恢复,使用前务必确认列表内容。