git stash 的使用

1,059 阅读6分钟
原文链接: www.cnblogs.com
代码改变世界

加个小鸡腿

git stash 用法总结和注意点

2018-09-04 18:02  加个小鸡腿  阅读(156510)  评论(2)  编辑  收藏

常用git stash命令:

(1)git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list  :查看stash了哪些存储

(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}  -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储

(8)git stash clear删除所有缓存的stash

 

说明:新增的文件,直接执行stash是不会被存储的,举例如下:

如上图:在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 的一个限制是它会一下暂存所有的文件。有时,只备份某些文件更为方便,让另外一些与代码库保持一致。一个非常有用的技巧,用来备份部分文件:

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

 

参考链接:

https://blog.csdn.net/jeffasd/article/details/53107182

http://www.cppblog.com/deercoder/archive/2011/11/13/160007.aspx

https://blog.csdn.net/baidu_21578557/article/details/52137324

https://blog.csdn.net/kingboyworld/article/details/76408819

https://blog.csdn.net/AndyNikolas/article/details/79906132

 

Add your comment

  1. #1楼 曹浩政 2019-10-30 15:44
    学到了东西,感谢分享 支持(0) 反对(0)
  2. #2楼 4418182 11/7/2019 3:26:35 PM snowlch 2019-11-07 15:26
    不错 支持(0) 反对(0)
刷新评论刷新页面 返回顶部 注册用户登录后才能发表评论,请 登录注册访问 网站首页。 【推荐】了解你才能更懂你,博客园首发问卷调查,助力社区新升级
【推荐】悬赏10万,基于领先NLP技术,开发新一代交互式文本智能机器人
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】5.23智慧医疗前沿技术沙龙,特邀多位医疗公司CEO上线直播
相关博文:
· git-stash用法小结
· Git的add、commit、push命令
· gitstash命令使用手册
· 【Git】Git 本地的撤销修改和删除操作
· Git 简易手册
» 更多推荐... 最新 IT 新闻:
· 花点时间CEO:100%退款并追加同等现金赔偿
· 雷军两会建言:推动卫星互联网行业发展
· 天猫精灵战略“扩编”,目标孵化10个“米家”
· B站向左,知乎向右
· 前迪士尼高管领衔TikTok,张一鸣为何交出字节跳动全球最强产品?
» 更多新闻...

About

昵称: 加个小鸡腿
园龄: 2年6个月
粉丝: 15
关注: 1 +加关注

最新评论

随笔档案

推荐排行榜

日历

< 2020年5月 >
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

随笔分类

阅读排行榜

www.spiga.com.mx

Copyright © 2020 加个小鸡腿
Powered by .NET Core on Kubernetes

博客园