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

相关推荐
M--Y2 小时前
Git原理与使用
git
原来是猿2 小时前
Git【多人协作一】
git
AlbertS3 小时前
记一次推送lfs失败不能迁移git仓库到新的gitlab的问题
git·ai·gitlab·lfs·rejected
Eternity_GQM4 小时前
【Git入门】
大数据·git·elasticsearch
kikikidult6 小时前
GitHub的使用(二)——一次完整 Git 上线流程记录
git·github
茉莉玫瑰花茶6 小时前
Redis 持久化
redis·git·github
KaneLogger16 小时前
OpenCode 操作手册
git
木子小喵16 小时前
通俗讲解Git安装每一步!!
git
IOT那些事儿17 小时前
TortoiseGit拉取开源子仓库失败
git·ssh·tortoisegit·submodule