git stash

文章目录

1.简介

git stash 是一个让你临时保存当前工作区修改的命令。它会把工作区和暂存区的改动保存起来,让代码回到上一次提交的状态(干净的工作区),方便你切换分支处理其他任务。稍后可以再把保存的内容恢复回来继续开发。

核心价值:避免提交半成品代码,又能自由切换分支。

2.格式

bash 复制代码
git stash list [<log-options>]
git stash show [-u | --include-untracked | --only-untracked] [<diff-options>] [<stash>]
git stash drop [-q | --quiet] [<stash>]
git stash pop [--index] [-q | --quiet] [<stash>]
git stash apply [--index] [-q | --quiet] [<stash>]
git stash branch <branchname> [<stash>]
git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
	     [-u | --include-untracked] [-a | --all] [(-m | --message) <message>]
	     [--pathspec-from-file=<file> [--pathspec-file-nul]]
	     [--] [<pathspec>...​]]
git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
           [-u | --include-untracked] [-a | --all] [<message>]
git stash clear
git stash create [<message>]
git stash store [(-m | --message) <message>] [-q | --quiet] <commit>
git stash export (--print | --to-ref <ref>) [<stash>...​]
git stash import <commit>

3.选项

bash 复制代码
-a, --all
	包含所有文件(包括被 `.gitignore` 忽略的)
-m, --message <message>
	添加描述信息
-u, --include-untracked
	包含未跟踪的文件
-k, --keep-index
	暂存区内容保持不变,只暂存工作区修改
-- <pathspec>
	只暂存指定路径的文件
-S, --staged
	只暂存暂存区的内容

4.示例

  1. 基础保存与恢复
bash 复制代码
# 保存当前修改
git stash

# 查看保存列表
git stash list
# 输出: stash@{0}: WIP on main: 1234567 最后一次提交

# 恢复并删除记录(最常用)
git stash pop
  1. 保存时添加描述(推荐)
bash 复制代码
# 带描述保存,便于识别
git stash save "正在开发用户登录功能"

# 或使用 push 写法
git stash push -m "正在开发用户登录功能"
  1. 包含未跟踪的文件
bash 复制代码
# 新建了文件但还没 add,默认 stash 不会保存
git stash -u   # 包含未跟踪文件
git stash -a   # 包含所有文件(包括 .gitignore 忽略的)
  1. 紧急修复 Bug 场景
bash 复制代码
# 1. 在 feature 分支开发到一半
git stash save "feature 开发中"

# 2. 切换到 master 修 Bug
git checkout master
# 修复 Bug、提交...

# 3. 切回 feature,恢复进度
git checkout feature
git stash pop
  1. 恢复指定的 stash
bash 复制代码
# 查看所有 stash
git stash list
# stash@{0}: On main: 登录功能
# stash@{1}: On main: 缓存优化

# 恢复指定的 stash(并删除)
git stash pop stash@{1}

# 恢复指定的 stash(保留记录)
git stash apply stash@{1}
  1. 只暂存部分文件
bash 复制代码
# 只暂存指定文件
git stash push -m "只存这个文件" -- path/to/file.go
  1. 查看 stash 内容
bash 复制代码
# 查看最近一次 stash 的改动摘要
git stash show

# 查看完整 diff
git stash show -p

# 查看指定 stash 的完整 diff
git stash show -p stash@{1}
  1. 从 stash 创建新分支
bash 复制代码
# 当 stash 与当前分支有冲突时,可以直接创建新分支
git stash branch new-feature stash@{0}

5.小结

场景 推荐命令
保存当前进度 git stashgit stash save "描述"
查看保存记录 git stash list
恢复并继续 git stash pop
恢复但保留记录 git stash apply
丢弃某个记录 git stash drop stash@{n}
清空所有记录 git stash clear
包含新文件 git stash -u

一句话总结git stash = 临时保存 → 切换分支干活 → 恢复继续。用完即走,不污染提交历史。


参考文献

Git - git-stash Documentation

相关推荐
玄芯散人7 小时前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
寺中人10 小时前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
荔枝梅梅12 小时前
新手程序员 SSH 第一课:从 Git 仓库连接失败理解 SSH 协议与密钥配置
git
玄芯散人12 小时前
【筑基·057】Git代码时光机:版本控制入门到分支管理
git·版本控制·嵌入式开发
szephyr15 小时前
Git 分支管理实战:feature/release/hotfix 怎么用才不乱
git·分支管理·团队协作·工作流·hotfix
一木 之林15 小时前
手搓家庭服务器:二手装机、Docker部署、端口映射与frp内网穿透
服务器·人工智能·git·编辑器
烛之武15 小时前
Git教程笔记
git·gitee
Sharewinfo_BJ16 小时前
PBIP项目结构与文件解析
git·powerbi·智信bi·上北智信
Hvitur1 天前
Linux安装Git【离线安装】
git
howard20051 天前
6.4 Git安装与配置
git·安装配置