文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

概述

git stash 是 Git 中用于临时保存未提交更改的命令。当你需要切换分支、拉取更新或清理工作区,但又不想提交当前未完成的修改时,可使用 git stash 将更改保存到栈中,稍后再恢复。

基本用法

保存当前更改

bash
git stash save "描述信息"  # 保存工作区和暂存区的更改,并添加描述(可选)
git stash  # 等同于 save,无描述信息

查看 stash 列表

bash
git stash list  # 显示所有 stash 记录
# 输出示例:
# stash@{0}: WIP on master: abc123 提交信息
# stash@{1}: On dev: 临时保存

恢复 stash

bash
git stash apply  # 恢复最近一次 stash(不删除)
git stash apply stash@{2}  # 恢复指定 stash(通过索引)

恢复并删除 stash

bash
git stash pop  # 恢复最近一次 stash 并从栈中删除
git stash pop stash@{1}  # 恢复指定 stash 并删除

删除 stash

bash
git stash drop  # 删除最近一次 stash
git stash drop stash@{3}  # 删除指定 stash
git stash clear  # 删除所有 stash

常用选项

选项说明
--keep-index只保存工作区的更改,暂存区的内容不被 stash(保留已 git add 的文件)
--include-untracked, -u包含未跟踪文件(新增文件)到 stash 中
--all, -a包含所有文件(包括忽略文件)到 stash 中
--patch, -p交互式选择部分文件 / 代码块进行 stash
show查看 stash 的具体更改内容(如:git stash show stash@{0}

工作流程示例

场景:在未完成当前工作时需紧急切换到其他分支

  1. 保存当前工作区

    bash
    git stash save "临时保存未完成的功能"
  2. 切换到其他分支处理任务

    bash
    git checkout hotfix
    # 处理紧急任务...
    git commit -m "修复紧急 bug"
  3. 回到原分支恢复工作

    bash
    git checkout feature
    git stash pop  # 恢复并删除最近的 stash

注意事项

  1. 冲突处理:恢复 stash 时若与当前分支有冲突,需手动解决:

    bash
    git stash apply  # 遇到冲突暂停
    # 手动修改冲突文件
    git add <冲突文>
    git stash drop  # 手动删除已应用的 stash
  2. stash 索引变化:删除中间的 stash 会导致后续索引前移(如删除 stash@{1} 后,原 stash@{2} 变为 stash@{1})。

  3. 分支关联性:stash 默认不关联特定分支,可在任意分支恢复,但建议在相同分支恢复以减少冲突。

  4. 复杂变更的保存:使用 --patch 选项可选择性 stash 部分文件或代码块,适用于混合修改场景。

应用场景

  • 紧急切换任务:在未完成当前功能时,需立即处理其他分支的工作。
  • 清理工作区:拉取远程更新前,临时保存本地更改以避免冲突。
  • 代码回滚实验:尝试新功能但不想提交,随时可恢复到原始状态。
  • 分离提交:将混合的修改拆分为多个 stash,再逐个恢复并提交。

进阶技巧

创建分支从 stash 恢复

bash
git stash branch new-feature  # 基于 stash 创建新分支并自动恢复

查看 stash 差异

bash
git stash show -p  # 查看最近一次 stash 的详细差异
git diff stash@{0}  # 对比当前工作区与 stash 的差异

直接提交 stash

bash
git stash commit  # 将最近的 stash 直接转为一个新提交

小结

git stash 是 Git 中高效管理临时更改的工具,核心优势在于非破坏性保存工作状态,避免频繁提交不完整代码。使用时需注意 stash 的生命周期管理(及时恢复或删除),并善用 --patch 选项处理复杂场景。结合 git stash branch 可更安全地恢复到独立分支,减少冲突风险。

赞赏博主
评论 隐私政策