git stash 用法总结和注意点

https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html

常用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

Git:git stash存储文件修改相关推荐

  1. Git丢弃不要的修改

    在项目的某次修改中,可能包括添加.删除.更新了一些文件,结果并不好.这时想要丢弃这些修改. 这些变动包括2中类型: tracked file(s) untracked file(s) 使用git cl ...

  2. Git 使用 stash暂存代码

    如果你修改了代码没有commit提交本地库,git拒绝你切换分支. 如果我们不想提交不完善的代码,但是得去修改一个紧急Bug,此时 stash 可将当前未提交到本地仓库的代码,储藏(stash)到Gi ...

  3. Git 储藏(stash)详解

    文章目录 单次储藏及应用 多次储藏及应用 对特定范围文件进行储藏 此文在阅读前需要有一定的git命令基础,若基础尚未掌握,建议先阅读这篇文章Git命令播报详版 在平常的工作中,当我们在单独拉取的功能分 ...

  4. git 如何stash(储藏)部分文件

    今天工作时遇到一个问题,新做的功能有问题,加了好多调试信息,另外想回退到上一次的版本看一下运行时的代码堆栈有什么不同,这就需要把加的调试信息stash起来,不然回退的时候会冲突.但是目录下还有好多被I ...

  5. git修改代码后,如何再git pull而不覆盖修改的代码

    一. git pull不覆盖修改的代码: 先把修改好的代码存放在缓存里,等代码拉下来以后再恢复缓存里的修改的代码 步骤: 1.git stash save "这里是注释" 2.gi ...

  6. IDEA的Shelve与Git的Stash之间的区别

    前言 在日常开发中,会遇到需要在不同的开发任务之间切换的情况,此时,如果手中有尚未写完的代码,就需要使用某种方法先保存起来,之后再继续处理没写完的代码. 有两种方法可以解决上述问题:一个是利用IDEA ...

  7. git切换分支保存修改的代码的方法

    刚才做操作发现一个问题,就是本地有一个old分支,此时本地又new了一个新的分支,那么我在old分支上做修改后切换到new分支上,发现文件是修改后的.原本理解是一个分支一套代码,那么为什么此时代码是一 ...

  8. Linux 环境 搭建Git 服务器,并且修改SSH端口使用

    1.环境配置说明 服务器 CentOS 7 + git(git version 1.8.3.1) 客户端 Windows10 + SourceTree 2.安装 Git 服务器端安装: sudo yu ...

  9. 【Git】Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 feature1 分支并提交 | 修改 master 主版本并提交 )

    文章目录 一.创建并切换分支 git switch -c feature1 二.修改 feature1 分支并提交 三.修改 master 主版本并提交 一.创建并切换分支 git switch -c ...

最新文章

  1. RabbitMQ-1
  2. Spring Bean 装配和依赖注入
  3. 关于sqlite数据库在使用过程中应该注意以下几点
  4. [云炬python3玩转机器学习笔记] 2-1机器学习基础概念
  5. Rancher2.0中邮件通知的设置
  6. UVA-804 模拟
  7. ezdpl Linux自动化部署实战
  8. hql Hibernate.gethibernatetemplate()
  9. java main 如何不退出_为什么java main主线程退出了子线程还能运行;golang main结束所有协程都被结束了...
  10. serialVersionUID的作用以及如何用idea自动生成实体类的serialVersionUID
  11. 【Pytorch神经网络基础理论篇】 07 线性回归 + 基础优化算法
  12. 微型计算机原理王,微型计算机原理王1王忠民著.ppt
  13. 添加roster好友 命令
  14. TCP 协议学习小结
  15. Egert实现五点连线(创意参考:网易爱的不同定义)[附源码]
  16. Py之seaborn:数据可视化seaborn库(一)的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的简介、使用方法之最强攻略(建议收藏)
  17. 毕业4年,给自己来个了结,^_^
  18. 阿拉伯数字转换成中文数字 C++
  19. 概率论学习三、古典概型
  20. 京东3元无门槛优惠券变京豆

热门文章

  1. DML DDL DCL区别
  2. hibernate文档
  3. Linux系统网络性能实例分析
  4. 并行编译 Xoreax IncrediBuild
  5. IOS 计时器 NSTimer
  6. 花生壳动态域名解析工具原理
  7. Android实现计时与倒计时的几种方法
  8. Linux 大文件快速处理小的办法
  9. zabbix配置微信报警
  10. 企业实战|企业FTP搭建