【转】[Git] git stash 命令介绍

转自:豆包AI

git stash 是 Git 提供的一个强大工具,用于临时保存未提交的修改,让你能够在不提交当前工作的情况下切换分支、处理紧急任务或清理工作目录。其核心作用和常见场景如下:

1. 核心功能

暂存未提交的修改

将当前工作目录和暂存区(add 后的文件)的修改保存到一个栈结构中,使工作目录恢复到最后一次提交时的状态。例如:
git stash  # 保存当前修改
# 或指定描述信息
git stash save "临时保存未完成的功能"
 

恢复暂存的修改

从栈中取出最近一次保存的修改并应用到当前分支:
git stash pop  # 恢复并删除栈顶的 stash
# 或恢复指定的 stash(通过编号)
git stash apply stash@{1}  # 恢复但不删除
 

2. 典型使用场景

场景 1:切换分支前保存工作

当你在某个分支上工作到一半,需要紧急切换到其他分支处理问题时:
# 当前在 feature 分支,有未提交的修改
git stash  # 保存修改
git checkout main  # 切换到 main 分支处理紧急任务
# 处理完后回到 feature 分支
git checkout feature
git stash pop  # 恢复之前的工作
 

场景 2:清理工作目录

暂时移除未完成的修改,使工作目录干净(例如执行 git bisect 或 git rebase 前):
git stash  # 清理工作目录
# 执行其他操作...
git stash pop  # 恢复修改
 

场景 3:尝试实验性修改

在不提交的情况下尝试一些临时修改,验证想法后决定是否保留:
# 做一些实验性修改
git stash  # 保存实验
git stash pop  # 恢复查看效果
# 或丢弃实验
git stash drop
 

3. 常用命令

命令作用
git stash 保存当前工作目录和暂存区的修改(不包括未跟踪文件)。
git stash -u 包含未跟踪文件(-u 或 --include-untracked)。
git stash -a 包含所有文件(-a 或 --all,包括被 .gitignore 忽略的文件)。
git stash list 查看 stash 列表(例如:stash@{0})。
git stash pop 恢复并删除最近的 stash。
git stash apply 恢复但不删除 stash(可指定 stash@{n})。
git stash drop 删除指定的 stash(默认删除最近的)。
git stash clear 删除所有 stash。
git stash branch 创建新分支并直接应用 stash,然后删除该 stash。

4. 注意事项

  1. 冲突处理:如果恢复 stash 时与当前分支有冲突,需要手动解决冲突。
  2. 分支关联性:stash 是全局的,不绑定特定分支,可以在任意分支恢复。
  3. 持久化:stash 存储在本地仓库中,不会随 git push 上传到远程。
  4. 命名管理:使用 git stash save "描述信息" 为 stash 添加注释,方便识别。

5. 进阶技巧

部分文件 stash

只保存部分修改的文件:
git stash push -m "保存部分文件" 文件1 文件2
 

查看 stash 差异

git stash show stash@{0}  # 查看摘要
git stash show -p stash@{0}  # 查看详细 diff
 

应用 stash 到特定分支

git checkout 目标分支
git stash apply stash@{0}
 

总结

git stash 是 Git 中最实用的工具之一,适合以下场景:

 

  • 临时保存未完成的工作,避免提交不完整的代码。
  • 快速清理工作目录,处理紧急任务。
  • 实验性修改的验证与管理。

 

合理使用 git stash 可以显著提高开发效率,减少因频繁提交或切换分支带来的困扰。
posted on 2025-07-17 17:58  z5337  阅读(151)  评论(0)    收藏  举报