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 addgit stash 没有必然关系,但是执行 git stash 能正确存储的前提是文件必须在 git 版本控制中才行。

常规 git stash 的一个限制是它会一下暂存所有的文件。有时,只备份某些文件更为方便,让另外一些与代码库保持一致。一个非常有用的技巧,用来备份部分文件:

  1. add 那些你不想备份的文件(例如: git add file1.js, file2.js);
  2. 调用 git stash –keep-index。只会备份那些没有被 add 的文件。
  3. 调用 git reset 取消已经 add 的文件的备份,继续自己的工作。

三、拓展阅读

以上是关于Git进阶:git stash和git add的主要内容,如果未能解决你的问题,请参考以下文章

git切换到别的分支,要暂时保存当前分支的修改(不想进行add 和commit)的方法 git stash

git使用进阶——stash及cherry-pick的理解和实例

git使用进阶——stash及cherry-pick的理解和实例

git学习:git stash

git stage 与git add 有啥区别

Git-基本操作