一、介绍

如果修改后的内容还不想commit,就可以用git stash命令。它会将工作区和暂存区中的修改(也就是还没commit的内容)都会被保存到堆栈里,并在之后恢复到任意指定的分支上。

二、应用场景

1、在分支a进行开发feature 1时,突然需要紧急修改之前的bug。这时就可以将当前feature 1的相关内容stash起来,修改完bug后,再恢复刚刚的内容;

2、本来需要在dev分支上进行开发的内容,却不小心在master分支上进行。这时可以先stash,切换回dev分支后再pop出来即可。

三、常用命令

1、git stash

会将工作区和暂存区,也就是还没commit的内容都会被保存到堆栈里。

2、git stash push

git stash命令会将当前工作区和暂存区中的内容一股脑压入堆栈中。但有时候我们只是想要压入某一个或几个文件,这时就可以通过下面命令选择性压入:

git stash push <file1> <file2> <file3>

其中文件之间需要用空格隔开。
其实一开始提到的git stash是git stash push的缩写。不过在进行此操作时,需要写全命令。

3、git stash pop

恢复堆栈中最新的一条内容,同时该内容也会从堆栈中删去。相当于剪切操作。
当堆栈中有多条内容时,可以通过加参数–index number来恢复特定的内容。比如恢复index=1的内容:

git stash pop --index 1

4、git stash apply

类似于git stash pop,恢复堆栈中最新的一条内容,只不过不会将内容从堆栈中删除。相当于复制操作。
适合用于多个分支的场景。

5、git stash save “note”

stash时,如果不做一些备注,时间久了很容易忘记。而且堆栈有多条内容时也容易混淆。所以推荐在stash时加上备注。

进阶:如何实现把众多修改中的某几个stash起来,同时给予备注咧?

例子:如果你修改了a1,a2,a3,b1,b2文件,而你只想要将a1,a2,a3给stash起来并且给予备注,那么可以这么操作:

  • 首先,将b1和b2文件stash起来——git stash push b1 b2
  • 然后将剩下的a1,a2,a3都stash起来并给予备注——git stash save “modify a”
  • 最后把b1和b2给pop出来即可——git stash pop --index 1

因为git stash push和git stash save好像不能联合着用,所以就用了上面的方法~有更好的办法可以留言告诉我哈

6、git stash list

查看堆栈中的所有内容,方便下一步操作。
特别是堆栈中存在多个内容时,可以获取内容对应的index号。

7、git stash drop

默认会删除最近存入堆栈的内容,同样也可以通过添加参数–index number 来选择性删除内容。
此处的number可以通过git stash list获得。

有时候不小心误删了怎么办?
不用担心,通过下面几步轻松找回!

a.找到删除内容的ID号。

用git stash drop命令后,会出现以下提示:

Dropped refs/stash@{0} (acf4577151935a7259937ed522901fdcde5f0e0b)

其中acf4577151935a7259937ed522901fdcde5f0e0b就是删除的ID号。
当然你也可以通过以下命令来查找最近一些删除的ID号,只不过需要加载一会儿。

git fsck --lost-found

在这里插入图片描述

b.查看丢弃内容是否为你要的内容:
可以直接通过

git show acf457 -p

查看修改情况,看是不是你刚刚drop的内容。

c.通过git stash apply ID 恢复
比如:

git stash apply acf457 

通过上面三步,误删的内容就可以找回来啦~

8、git stash clear

移除堆栈中所有的内容。

9、git stash show

显示堆栈中最新内容与当前目录内容的粗略差异。
如果想要更加看到更加详细的内容,可以加上-p

git stash show -p

如果堆栈中存在多个内容,而你想要看到之前的某一个内容和当前目录的具体差异,可以通过

git stash show --index number -p
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐