当前位置:   article > 正文

git stash详解

git stash

提示:我们经常修改程序出现问题,想要回去以前版本查看,而又不想丢失工作区和暂存区的代码,而此时代码也没修改完也不想提交,就要用到stash


前言

使用 git stash 可以将没有提交的内容(包括工作区和暂存区)保存至堆栈中。

注意: 如果工作区新建了个文件,此文件从来没有被添加到暂存区,那么这个文件就不能被git管理,也就不能被保存到堆栈


1、将未提交的修改保存至堆栈

将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。

其中所有未提交的修改不包括工作区新建的文件

可以使用 git stash 或者 git stash save "注释"
在这里插入图片描述
然后我将t1文件乱加一些字符
在这里插入图片描述
t1文件被改动,改动后也没有提交,也就是改动后的t1在工作区。

1.1 git stash

  • 使用 git stash 将未提交的文件(也就是t1)保存到堆栈:
    在这里插入图片描述
  • git stash save
    作用等同于git stash,区别是可以加一些注释

特别说明:
当使用 git stash 将工作区内容提交到堆栈临时存储后,工作区的内容会立刻变为上一次提交的内容。
此时如果使用 git stash pop将堆栈内容弹出,工作区内容立马恢复。

1.2 git stash list

  • 使用git stash list列出所有保存的临时提交(stash)
    在这里插入图片描述
    您当前只有一个保存的临时提交,它的标识为 stash@{0}。
    该临时提交的消息是 “WIP on master: 6b63346 第三次提交”,表示该临时提交是在 master 分支上进行的工作,并且是提交对 6b63346(提交的哈希值)的更改。

1.3 git stash show

  • 使用git stash show查看堆栈中最新保存的stash 更改信息
    在这里插入图片描述
    t1 | 1 +
    有一个文件发生了更改。文件名为 t1,文件中插入了一行内容
    1 file changed, 1 insertion(+)
    输出还显示了更改的摘要信息:
    1 file changed:一个文件发生了更改。
    1 insertion(+):插入了一行内容。

2、切换到第一次提交

在这里插入图片描述
我们可以看到t1内容变为以前的内容了。
此时我们再查看堆栈里面的内容依然存在:
在这里插入图片描述

3、切换回master分支

在这里插入图片描述

4、将当前stash中的内容弹出,并应用到当前分支对应的工作目录上

4.1 git stash pop

将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。
注:该命令将堆栈中最近保存的内容删除(栈是先进后出
在这里插入图片描述
已经恢复了之前工作区的内容了
在这里插入图片描述
此时堆栈区也没有内容了

4.2 git stash apply

将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。

5、删除堆栈

5.1 从堆栈中移除某个指定的stash

git stash drop + 名称

5.2 清除堆栈中的所有 内容

git stash clear

参考:
https://blog.csdn.net/stone_yw/article/details/80795669

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/340480
推荐阅读
相关标签
  

闽ICP备14008679号