git stash详解

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

目录

  • 前言
  • 1、将未提交的修改保存至堆栈
    • 1.1 git stash
    • 1.2 git stash list
    • 1.3 git stash show
  • 2、切换到第一次提交
  • 3、切换回master分支
  • 4、将当前stash中的内容弹出,并应用到当前分支对应的工作目录上
    • 4.1 git stash pop
    • 4.2 git stash apply
  • 5、删除堆栈
    • 5.1 从堆栈中移除某个指定的stash
    • 5.2 清除堆栈中的所有 内容


前言

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

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


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

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

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

可以使用 git stash 或者 git stash save "注释"
git stash详解_第1张图片
然后我将t1文件乱加一些字符
git stash详解_第2张图片
t1文件被改动,改动后也没有提交,也就是改动后的t1在工作区。

1.1 git stash

  • 使用 git stash 将未提交的文件(也就是t1)保存到堆栈:
    git stash详解_第3张图片
  • 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、切换到第一次提交

git stash详解_第4张图片
我们可以看到t1内容变为以前的内容了。
此时我们再查看堆栈里面的内容依然存在:
git stash详解_第5张图片

3、切换回master分支

git stash详解_第6张图片

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

4.1 git stash pop

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

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

你可能感兴趣的:(GitHub,git)