经常使用git stash命令:git
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要能够的,但查找时不方便识别。缓存
(2)git stash list :查看stash了哪些存储app
(3)git stash show :显示作了哪些改动,默认show第一个存储,若是要显示其余存贮,后面加stash@{$num},好比第二个 git stash show stash@{1}版本控制
(4)git stash show -p : 显示第一个存储的改动,若是想显示其余存存储,命令:git stash show stash@{$num} -p ,好比第二个:git stash show stash@{1} -pcode
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},若是要使用其余个,git stash apply stash@{$num} , 好比第二个:git stash apply stash@{1} blog
(6)git stash pop :命令恢复以前缓存的工做目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工做目录下,默认为第一个stash,即stash@{0},若是要应用并删除其余stash,命令:git stash pop stash@{$num} ,好比应用并删除第二个:git stash pop stash@{1}it
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储file
(8)git stash clear :
删除全部缓存的stash技巧
说明:新增的文件,直接执行stash是不会被存储的,举例以下:im
如上图:在git status 那一步很明显能够看出来,我修改了README,添加了新文件abc.txt,而后执行了git stash save后,在执行git stash list 能够看到刚才的save是的信息,而后使用git stash show ,只显示了README的改动被存起来了。
咱们知道,执行了git statsh 之后,被存起来的在当前目录再执行git status 就看不到了,可是咱们如今再执行git status,以下:
这个文件还在,说明没有被存起来。说白了就是没有在git 版本控制中的文件,是不能被git stash 存起来的。
那要怎么办呢,这个文件我也想存起来,很明显,先执行下git add 加到git版本控制中,而后再git stash就能够了,以下:
最后一步能够看出来,这个新增文件已经被stash了。
这个时候再执行下git status ,被存起来的在当前目录就看不到了,以下:
这个时候,想切分支就不再会报错有改动未提交了。
若是要应用这些stash,直接使用git stash apply或者git stash pop就能够再次导出来了。
总结下:git add 只是把文件加到git 版本控制里,并不等于就被stash起来了,git add和git stash 没有必然的关系,可是执行git stash 能正确存储的前提是文件必须在git 版本控制中才行。
参考的一个连接中说到了如下,我摘录此处备份下(就是只stash一部分文件):
常规 git stash 的一个限制是它会一下暂存全部的文件。有时,只备份某些文件更为方便,让另一些与代码库保持一致。一个很是有用的技巧,用来备份部分文件: