git - stash
1、stash
储藏。保存当前工作区和暂存区进度,回退到上一个 git commit 之后的状态
2、原理
跟踪文件的修改与暂存的改动,然后将未完成的修改保存到一个栈上,而你可以在任何时候重新应用这些改动。
3、常用命令
(1)创建缓存
格式:git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
[--] [<pathspec>…]]
git stash => 创建缓存
git stash save "message" => 创建存储,并添加备注。保存所有变更
message,可选,存储时添加的备注。
git stash push -m "message" => 创建缓存,并添加备注。保存所有变更
git stash push {path} => 缓存指定位置的文件
path,将要保存的缓存文件路径
(2)查看缓存列表
格式:git stash list [<options>]
git stash list => 查看所有缓存列表
(3)恢复缓存
格式:git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
git stash pop => 恢复第一个缓存,并从缓存列表删除缓存
git stash pop stash@{index} => 恢复指定缓存,并从缓存列表删除缓存
index,缓存的下标
git stash apply => 应用第一个缓存,并保留缓存
git stash apply stash@{index} => 应用指定的缓存,并保留缓存
index,缓存的下标
(4)显示缓存改动
格式:git stash show [<options>] [<stash>]
git stash show -p => 显示第一个缓存改动
git stash show stash@{index} -p => 显示第 index 的缓存改动
index,缓存下标
-p/--patch,可选,查看特定缓存的改动
(5)删除缓存
格式:git stash clear
git stash clear => 删除所有缓存
git stash clear stash@{index} => 删除指定的缓存
index,将要删除的缓存下标
(6)移除缓存
格式:git stash drop [-q|--quiet] [<stash>]
git stash drop => 移除缓存,默认第一个
git stash drop stash@{index} => 移除第 index 的缓存
index,将要移除的缓存的下标
(7)创建分支
格式:git stash branch <branchname> [<stash>]
根据最近的stash创建一个新的分支,然后删除最近的 stash
git stash branch <branchname> => 根据最新的stash创建一个新的分支,然后删除最新的stash
git stash branch <branchname> stash{index} => 根据指定的的stash创建一个新的分支,然后删除指定的stash
branchname,新建的分支名称
index,stash下标
(8)创建一个悬空提交
格式:git stash create [<message>]
git stash create "message" => 创建一个悬空提交 (dangling commit),不会将 ref 存储在任何地方
(9)存储上一个命令中创建的悬空提交
格式:git stash store [-m|--message <message>] [-q|--quiet] <commit>
参数
-q|--quiet
静默模式-p|--patch
以 patch 方式 push stash-k|--[no-]keep-index
保留 index 序号-u|--include-untracked
untracked 状态的文件也会被 push-a|--all
untracked 和 ignored 的文件也会被 push-m|--message
<message>
输出 stash 信息-- [<pathspec>]
针对特定的路径 push
参考链接
官网:https://git-scm.com/docs/git-stash
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%E4%B8%8E%E6%B8%85%E7%90%86
https://www.yiibai.com/git/git_stash.html
https://segmentfault.com/a/1190000019283898
https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html