Git进阶:git stash和git add
Posted No Silver Bullet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git进阶:git stash和git add相关的知识,希望对你有一定的参考价值。
一、常用命令
git stash
常用命令:
-
git stash save “save message”
: 执行存储时,添加备注,方便查找,只有git stash
也可以,但查找时不方便识别。 -
git stash list
:查看stash
了哪些存储。 -
git stash show
:显示做了哪些改动,默认 show 第一个存储,如果要显示其他存贮,后面加stash@{$num}
,比如第二个git stash show stash@{1}
。 -
git stash show -p
: 显示第一个存储的改动,如果想显示其他存储,命令:git stash show stash@{$num} -p
,比如第二个:git stash show stash@{1} -p
。 -
git stash apply
:应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0}
,如果要使用其他个:git stash apply stash@{$num}
, 比如第二个:git stash apply stash@{1}
。 -
git stash pop
:恢复之前缓存的工作目录,并将缓存堆栈中的对应 stash 删除,同时将对应修改应用到当前的工作目录下,默认为第一个 stash,即 stash@{0},如果要应用并删除其他 stash,命令:git stash pop stash@{$num}
,比如应用并删除第二个:git stash pop stash@{1}
。 -
git stash drop stash@{$num}
:丢弃stash@{$num}
存储,从列表中删除这个存储。 -
git stash clear
:删除所有缓存的stash
。
!说明!: 新增的文件,直接执行
stash
是不会被存储的,如果要保存这个新增的文件,需要首先执行git add
命令把文件添加到git
版本控制中,然后再执行git stash
命令进行缓存。
二、总结
git add
只是把文件加到 git
版本控制里,并不等于就被 stash
起来了,git add
和 git stash
没有必然关系,但是执行 git stash
能正确存储的前提是文件必须在 git
版本控制中才行。
常规 git stash
的一个限制是它会一下暂存所有的文件。有时,只备份某些文件更为方便,让另外一些与代码库保持一致。一个非常有用的技巧,用来备份部分文件:
add
那些你不想备份的文件(例如:git add file1.js, file2.js
);- 调用
git stash –keep-index
。只会备份那些没有被 add 的文件。 - 调用
git reset
取消已经add
的文件的备份,继续自己的工作。
三、拓展阅读
以上是关于Git进阶:git stash和git add的主要内容,如果未能解决你的问题,请参考以下文章
git切换到别的分支,要暂时保存当前分支的修改(不想进行add 和commit)的方法 git stash
git使用进阶——stash及cherry-pick的理解和实例