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

猜你喜欢

转载自www.cnblogs.com/AmberNi/p/12147780.html