git stash 用法总结

1.作用

这个命令可以将当前的工作区域的代码暂存起来,在需要的时候再恢复使用。

2. 使用场景

        在使用git的时候,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,这时,我们不得不暂停手头上的工作,切换到另外的分支去修复错误,我们往往会把完成一半的代码commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来,这样的话往往log上会有大量不必要的记录。

        如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用 git stash 就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash pop将以前一半的工作代码恢复回来就可以了。

3. 细节与注意

默认情况下,git stash会缓存下列文件:

  • 添加到暂存区的修改(staged changes)
  • Git跟踪的但并未添加到暂存区的修改(unstaged changes)

但不会缓存以下文件:

  • 在工作目录中新的文件(untracked files)
  • 被忽略的文件(ignored files)

git stash命令提供了参数用于缓存上面两种类型的文件。

使用-u或者--include-untracked可以stash untracked文件。

使用-a或者--all命令可以stash当前目录下的所有修改。

4. 基本用法 

  •  保存:git stash

> 将当前工作区和暂存区的更改保存到一个栈结构

> git stash


> 将当前工作区和暂存区的更改保存到一个栈结构,并附带一个信息

> git stash save "message"


> 将当前工作区和暂存区的更改保存到一个栈结构,包括新增的文件 

> git stash -u

> git stash --include-untracked


> 将当前工作区和暂存区的更改保存到一个栈结构,包括新增的文件以及忽略的文件

> git stash -a

> git stash --all  

  • 查看栈中保存的更改:git stash list 

> 查看栈中所有保存的更改

> git stash list

  •  查看更改的具体内容:git stash show

        显示做了哪些改动,默认show第一个存储,如果要显示其他存储,后面加stash id,比如第二个 git stash show stash@{1},完整的差异可以使用git stash show -p。

> 查看栈中第一个更改的具体内容

> git stash show

> 查看栈中指定的更改的具体内容

> git stash show <stash id>

  •  恢复:git stash apply

        将stash缓存堆栈中第一个stash应用到当前的工作目录下,但是不会删除缓存堆栈中的缓存,默认使用第一个存储,即stash@{0},应用某个stash后面加stash id。

> 将栈中的第一个更改恢复到当前工作区和暂存区

> git stash apply

> 将栈中的指定的更改恢复到当前工作区和暂存区

> git stash apply <stash id>

  •  删除:git stash drop

        删除stash@{$num}存储,从列表中删除这个存储,默认删除第一个。

> 删除栈中的第一个更改

> git stash drop

> 删除栈中的指定的更改

> git stash drop <stash id>

  •  恢复 & 删除:git stash pop

> 将栈中的第一个更改恢复到当前工作区和暂存区,同时删除栈中的第一个更改
> git stash pop

> 将栈中的指定的更改恢复到当前工作区和暂存区,同时删除栈中的指定的更改
> git stash pop <stash id>

  • 清空:git stash clear 

> 清空栈中保存的更改
> git stash clear

  •  git stash branch <name>

         这条命令会根据最近的 stash 创建一个新的分支,然后删除最近的 stash(和 stash pop 一样),如果你需要某个 stash可以指明 stash id。

 

相关推荐

  1. git stash 用法总结

    2023-12-22 08:36:03       36 阅读
  2. C++ set用法总结

    2023-12-22 08:36:03       37 阅读
  3. C++ stack用法总结

    2023-12-22 08:36:03       49 阅读
  4. C++ unordered_map用法总结

    2023-12-22 08:36:03       34 阅读
  5. sql总结(高阶用法

    2023-12-22 08:36:03       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 08:36:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 08:36:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 08:36:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 08:36:03       20 阅读

热门阅读

  1. Http 请求体和响应体中重要的字段

    2023-12-22 08:36:03       32 阅读
  2. cka从入门到放弃

    2023-12-22 08:36:03       32 阅读
  3. nodejs设置x-xss-protection解决xss问题

    2023-12-22 08:36:03       39 阅读
  4. 一键启动脚本,Karfka,RocketMQ

    2023-12-22 08:36:03       67 阅读
  5. python初试三

    2023-12-22 08:36:03       47 阅读
  6. 使用汇编和反汇编引擎写一个x86任意地址hook

    2023-12-22 08:36:03       48 阅读
  7. leetcode做题笔记2866. 美丽塔 II

    2023-12-22 08:36:03       36 阅读
  8. css选择器

    2023-12-22 08:36:03       56 阅读
  9. R2S /NEO3(openwrt)几种固件试用总结

    2023-12-22 08:36:03       54 阅读
  10. proto与json的互相转换

    2023-12-22 08:36:03       46 阅读
  11. Pytorch:torch.nn.utils.clip_grad_norm_梯度截断_解读

    2023-12-22 08:36:03       44 阅读