git小技巧之git stash

我们日常开发包括我自用的小工具也在用git管理
在使用git的过程中经常有个场景是我在A分支上开发了一部分,临时需要切换到B分支,又不想先把这部分代码提交,因为还没开发完,
这是用git stash命令就能很好的解决这个问题,但是这里在使用git stash的时候我认为有两个阶段
第一阶段就是简单使用



比如我有这个进行中的变更,在有未提交的代码的时候可以先用

1
git add 1.txt

添加到暂存区,但不提交,然后使用

1
git stash

保存工作进度,git stash之后再用 git status 就看不到刚才的更改了

然后就是弹出刚才stash的变更了
可以使用 git stash pop 就可以把刚才藏起来的临时变更就弹出来了

这里其实在真正使用时我们如果是深度使用就可能会出现四个问题或者是诉求

问题一

我不止stash了一次变更,怎么找到stash的多少次呢,因为直接用 pop 就是把栈顶的那次隐藏的变更弹出来了
这个问题就可以通过 git stash list 来解决

问题二

如果使用的pop我们这个stash相当于栈顶弹出,已经pop出来的就没有了,如果我只是想看一下改了哪些,当然我们可以先pop出来,在stash回去,
但更好的办法就是用git stash apply,这样是不会清栈的

问题三

如何指定弹出,比如我在list里能看到多次stash,那么我想弹出其中某一次
可以用
git stash pop stash@{1} 注意这个 stash@{1} 是指stash list 的第二个,因为是从0开始的
弹出倒数第二次stash

问题四

我想知道我这个stash里内容是啥,在不用pop和apply的情况下有没有办法
也是有的
可以使用 git stash show 1 或者 git stash show stash@{1} 来查看这次变更了哪些文件
甚至我们可以用 git stash show 1 -p 来查看具体变更的内容