【Git】git stash 相关记录
alias 相关配置
➜ gridea git:(master) ag gst
gst='git status'
gsta='git stash push'
gstaa='git stash apply'
gstall='git stash --all'
gstc='git stash clear'
gstd='git stash drop'
gstl='git stash list'
gstp='git stash pop'
gsts='git stash save'
gstss='git stash show --text'
gstu='git stash --include-untracked'
以上是我的 git stash 相关的 alias 配置,包括 zsh 自带的配置以及自己在.bashrc 里面的自定义配置,如何配置这里就不展开讲了。
下面介绍一下我们常用的几条 stash 命令:
(这里就直接用设置的快捷命令了)
-
gstc清空栈 -
gsta将本地修改的代码推到栈内➜ gridea git:(master) ✗ ga . ➜ gridea git:(master) ✗ gsta Saved working directory and index state WIP on master: abe8de5 docs: update changelog -
gstl查看栈
-
gsts在gsta的基础上可以自定义备注➜ gridea git:(master) ✗ ga . ➜ gridea git:(master) ✗ gsts "save 2222" Saved working directory and index state On master: save 2222
- 相比第一次提交,加了备注的提交更清晰
- 同时根据序列号也可以看出,stash 符合 先进先出 的规则
-
查看某一次提交

如上图,目前栈内有三次提交记录。
gstss默认查看最近的一次提交,相当于gstss stash@{0}如果想针对查看特定的提交,如 "save 2222" 的提交记录,需要在后面加上特定提交的序号
gstss stash@{1},下面讲到的其他操作也是同理。
-
找到某次的提交记录后,需要将提交记录拷贝到本地,有两种方法:
gstaa从栈中拷贝出提交到本地(栈中的记录仍保留)


-
gstp从栈中推出某次提交(推出后,栈中不再留有这次提交记录)

-
由
gstp操作也可以看出,gstd其实就是删除栈内特定的提交记录,如删除stash@{1}的记录➜ gridea git:(master) ✗ gstd stash@{1} Dropped stash@{1} (95485801bdcb11f2e81c916529b447ff4f1da02f)
总结
gst='git status'
gsta='git stash push' //保存(不加说明)
gsts='git stash save' //保存(加说明)
gstaa='git stash apply' //复制某次提交到本地
gstp='git stash pop' //复制某次提交到本地,并删除栈内记录
gstall='git stash --all'
gstc='git stash clear' //清空栈
gstd='git stash drop' //删除栈内某次提交记录
gstl='git stash list' //查看栈内提交列表
gstss='git stash show --text' //查看栈内某次提交记录
gstu='git stash --include-untracked'