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

add 那些你不想备份的文件(例如: git add file1.js, file2.js)

调用 git stash –keep-index。只会备份那些没有被add的文件。

调用 git reset 取消已经add的文件的备份,继续自己的工作。

另外还可以使用git stash --patch[-p],(https://www.jianshu.com/p/fe4d54cb6244)

比如有个场景是:在本地改了大量的代码,但是有两个文件是适配本地的配置文件不需要上库,如果git commit [filename]的话需要写很多文件,很不方便,于是使用了stash方法,这里做个记录.

首先解释下git stash的作用,git stash是将本地没有commit的部份全部存储起来,这样方便你进行pull之类的操作,具体可以参考Git 工具 - 储藏与清理.

但是如果直接git stash的话,会将当前所有文件都存储起来,而我只想存储两个配置文件,其他的全部一起commit,这应该怎么办呢?这里需要用到一个git stash -p的命令;它是一个交互式命令,我们可以一个文件一个文件的遍历,决定每个文件的操作方式.

root /u/c/s/cbs (master)# git stash -p

diff --git a/cmd/scripts/cbs.sh b/cmd/scripts/cbs.sh

old mode 100644

new mode 100755

Stash mode change [y,n,q,a,d,/,?]?

这里的[y,n,q,a,d,/,?]分别代表的含义如下:

y - stage this hunk

n - do not stage this hunk

q - quit; do not stage this hunk nor any of the remaining ones

a - stage this hunk and all later hunks in the file

d - do not stage this hunk nor any of the later hunks in the file

g - select a hunk to go to

/ - search for a hunk matching the given regex

j - leave this hunk undecided, see next undecided hunk

J - leave this hunk undecided, see next hunk

k - leave this hunk undecided, see previous undecided hunk

K - leave this hunk undecided, see previous hunk

s - split the current hunk into smaller hunks

e - manually edit the current hunk

? - print help

所以,遇到我们需要stash的文件,我们就y,不需要stash需要commit的文件,我们就n,如果接下来没有需要stash的文件,则直接q退出就行.

将文件保存好后,我们就可以commit和push剩下的代码了.

git commit -m ""

git push origin master

然后我们将stash的文件恢复到本地,所有的操作就完成了.

git stash pop

参考链接:

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

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

git shanchu stash_git stash用法相关推荐

  1. git shanchu stash_git stash命令详解

    git stash命令用于将更改储藏在脏工作目录中. 使用语法 git stash list [] git stash show [] git stash drop [-q|--quiet] [] g ...

  2. git shanchu stash_git stash命令使用手册

    修改记录压栈保存: git stash push -u -m "msg" // -u ~ --意思是包含未被跟踪的文件 git stash push -m "msg&qu ...

  3. git shanchu stash_git stash命令

    git stash命令 当切换分支的时候,如果有未提交的变更记录,此时系统会阻止你切换分支,解决方法有两种. 一种是先将代码commit,切换分支修改完毕,再次切换回原分支,利用amend命令,取消c ...

  4. git shanchu stash_git-stash用法小结

    [时间:2016-10] [状态:Open] [关键词:git,版本控制,版本管理,stash,git储藏] 缘起 今天在看一个bug,之前一个分支的版本是正常的,在新的分支上上加了很多日志没找到原因 ...

  5. Git学习5:Git常用命令简明用法

    不要使用git commit -a 该命令可以对本地所有的变更文件(包括对本地修改和删除的文件)执行提交操作,但是不包括未被版本库跟踪的文件. git命令补充说明 显示.git目录所在的位置 git ...

  6. Git:git-pull的用法总结

    Git:git-pull的用法总结. 前言 本篇文章总结一下git-pull 的用法,主要过程是基于对官网的完整阅读,记录关键笔记和样例,加上自己的理解.整个过程是这样: 认真读完官网之后,才会知道它 ...

  7. Git:git-branch的用法总结

    概要 Git:git-branch的用法总结 博客 原帖收藏于IT老兵博客 前言 git-branch的用法.这个命令使用频度很高,还有一些没有搞明白,在这里总结梳理一下. PS:之前的文章题目命名都 ...

  8. Git 命令之stash

    Git 命令之stash 前言 1 stash 1.1 描述 1.2 应用场景 命令使用 前言 使用 Git 作为代码版本管理,早已是现在开发工程师必备的技能.可大多数工程师还是只会最基本的保存.拉取 ...

  9. git stash用法

    原理:git stash 这个命令将当前的工作状态保存到 git 栈,在需要的时候再恢复. 写在前面:从栈中用的时候千万别搞错了!!! 使用场景:多个需求同时开发的时候,需要不同的分支,在一个需求没开 ...

最新文章

  1. python编译环境搭建_python开发环境搭建
  2. Maven项目上总有一个小红叉问题
  3. 如何选择你最合适的linux系统
  4. 解决错误:Main application must be in the list of ap...
  5. 微信外卖小程序 怎么计算与客户的距离_微信小程序结合腾讯位置服务实现用户商家距离计算...
  6. QAU 18校赛 J题 天平(01背包 判断能否装满)
  7. docker 容器基础技术
  8. python os path_python os.path模块
  9. Percona XtraDB Cluster 集群参数配置说明(PXC 5.7)
  10. 局域网聊天关心他们的教育
  11. C# Winform控件对透明图片重叠时导致图片不透明的解决方法
  12. webstrom中使用git
  13. TortoiseSVN 执行清理( cleanUp )失败的解决方案
  14. 率土之滨显示未选择服务器怎么办,率土之滨未转服,为什么要转服
  15. 【Linux】10个帮助你调试的命令
  16. Mac中Word 2016导出PDF附带书签目录结构
  17. 编程界的十大天神,都来拜一拜吧
  18. 计算机专业考研要分最低的院校,计算机考研院校难度排行榜
  19. 产品思维训练 | 以网易云和微信为例,产品迭代的依据是什么?
  20. sqlite如何创建数据库

热门文章

  1. 2022-2028年中国地沟油制生物柴油行业市场研究及前瞻分析报告
  2. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作
  3. 2022-2028年中国橡胶板的制造行业发展战略规划及投资方向研究报告
  4. 中信银行总行信息科技部笔试面试以及最后拿offer经历
  5. debian10 简单的DNS服务器搭建
  6. 英伟达TRTTorch
  7. 三维场景图:用于统一语义、三维空间和相机的结构
  8. CVPR2020论文解析:视频分类Video Classification
  9. CentOS安装crontab
  10. 黑客基础知识与防护(一)