赞
踩
如果修改后的内容还不想commit,就可以用git stash命令。它会将工作区和暂存区中的修改(也就是还没commit的内容)都会被保存到堆栈里,并在之后恢复到任意指定的分支上。
1、在分支a进行开发feature 1时,突然需要紧急修改之前的bug。这时就可以将当前feature 1的相关内容stash起来,修改完bug后,再恢复刚刚的内容;
2、本来需要在dev分支上进行开发的内容,却不小心在master分支上进行。这时可以先stash,切换回dev分支后再pop出来即可。
会将工作区和暂存区,也就是还没commit的内容都会被保存到堆栈里。
git stash命令会将当前工作区和暂存区中的内容一股脑压入堆栈中。但有时候我们只是想要压入某一个或几个文件,这时就可以通过下面命令选择性压入:
git stash push <file1> <file2> <file3>
其中文件之间需要用空格隔开。
其实一开始提到的git stash是git stash push的缩写。不过在进行此操作时,需要写全命令。
恢复堆栈中最新的一条内容,同时该内容也会从堆栈中删去。相当于剪切操作。
当堆栈中有多条内容时,可以通过加参数–index number来恢复特定的内容。比如恢复index=1的内容:
git stash pop --index 1
类似于git stash pop,恢复堆栈中最新的一条内容,只不过不会将内容从堆栈中删除。相当于复制操作。
适合用于多个分支的场景。
stash时,如果不做一些备注,时间久了很容易忘记。而且堆栈有多条内容时也容易混淆。所以推荐在stash时加上备注。
例子:如果你修改了a1,a2,a3,b1,b2文件,而你只想要将a1,a2,a3给stash起来并且给予备注,那么可以这么操作:
因为git stash push和git stash save好像不能联合着用,所以就用了上面的方法~有更好的办法可以留言告诉我哈
查看堆栈中的所有内容,方便下一步操作。
特别是堆栈中存在多个内容时,可以获取内容对应的index号。
默认会删除最近存入堆栈的内容,同样也可以通过添加参数–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
通过上面三步,误删的内容就可以找回来啦~
移除堆栈中所有的内容。
显示堆栈中最新内容与当前目录内容的粗略差异。
如果想要更加看到更加详细的内容,可以加上-p
git stash show -p
如果堆栈中存在多个内容,而你想要看到之前的某一个内容和当前目录的具体差异,可以通过
git stash show --index number -p
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。