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
来查看具体变更的内容