Git stash 的作用是什么?如何使用?
Git stash 用于临时保存未提交的更改,允许开发者在切换任务时保持工作区干净。中等难度。
git stash 是 Git 版本控制工具中的一个命令,用于临时保存当前工作目录(工作区和暂存区)中的未提交更改。主要作用是在允许开发任务中断的场景(如切换分支修复紧急 Bug)下,将更改暂时存储到一个称为“stash stack”的区域中,从而使工作区恢复到干净状态(最后一次提交点的内容),事后再恢复进度继续开发。
在开发过程中,使用它需要遵循以下基本步骤和相关命令:
1. 保存未提交的更改
- 执行基本存储命令(不包含 untracked 文件):
git stash
或使用推荐的新语法并添加描述消息:
git stash push -m "添加任务描述消息" #
- 如果需要保存 untracked 文件(例如新的日志文件):
git stash push -u # -u 表示包含未跟踪文件
- 保存指定文件:
git stash push path/to/file.txt #
保存后,工作区立即变得干净,相当于
git reset --hard HEAD
的效果。
2. 查看已存储的 stash 列表
- 列出所有保存条目:
git stash list # 返回形如 stash@{n}: message 的列表,其中 n 是唯一索引
输出结果显示不同 stash 的描述消息。
3. 恢复指定的 stash 更改
- 应用最近一次的 stash(不删除栈记录):
git stash apply #
- 应用并立即从栈中移除最近的 stash:
git stash pop #
- 针对特定索引的 stash:
git stash apply stash@{1} # 应用索引为 1 的 stash
- 创建一个新分支并恢复相应 stash:
git stash branch <new-branch-name> stash@{n} #
4. 删除已保存的 stash
- 移除单个 stash(默认为最近记录):
git stash drop # 删除最旧的(stash@{0}) git stash drop stash@{1} # 删除具体索引的 stash
- 清空所有 stash 条目:
git stash clear #
- 使用
stash show
可在应用前预览更改差异:git stash show -p # 检查 stash 的详细变更。
主要应用场景包括:
- 中断当前开发去处理临时任务:从 dev 分支暂存未完成的更改,切换到 main 分支修复 Bug,之后返回恢复进度。
- 管理多个并行工件的堆栈存储,避免混淆工作副本。 为避免栈区累积过多历史记录,推荐在恢复后执行 git stash drop 清理无用条目。