背景
使用git协同开发工具的同学应该都知道,在开发过程中我们需要经常切换分支,例如正在某一个分支下做需求时候,在该需求还未完成时就需要在另外一个分支下进行问题的修改,如果直接git checkout 切换分支会有冲突,会导致切换不成功,但是又不想将当前的做的修改复原,于是想到将当前的改动暂时保存下来,然后切换到另外一个分支去修改问题,当问题修改完成了之后将分支切换回来,然后再将之前保存的改动释放即可继续对需求进行开发了。
用途
git stash这个命令可以将当前的工作状态保存到git栈,在需要的时候再恢复。
常见方法
1、git stash
保存当前的工作区与暂存区的状态,把当前的修改的保存到git 栈,等以后需要的时候再恢复,git stash 这个命令可以多次使用,每次使用都会新加一个stash@{num},num是编号
注意:
新增的文件,直接执行stash是不会被存储的。【换句话说:没有在git 版本控制中的文件,是不能被git stash 存起来的】 那要怎么办呢,新增的文件我也想存起来,很明显,先执行下git add 加到git版本控制中,然后再git stash就可以了
2、git stash save '注释'
作⽤等同于git stash,区别是可以加⼀些注释, 执⾏存储时,添加注释,⽅便查找
git stash save 'test comment some key words'
3、git stash pop
** **默认恢复git栈中最新的一个stash@{num},建议在git栈中只有一条的时候使用,以免混乱。
释放最近一次保存的内容,并且将该次保存的内容出栈(即将栈顶出栈,释放最近一次保存的内容后将该次保存内容删除)(git stash pop)
注意:该命令将堆栈中最新保存的内容删除
4、git stash list
查看当前stash的所有内容列表
如上图所示,stash@{0}和stash@{1}分别是两次保存的修改,stash@{0}是最新的一次提交暂存信息。
5、git stash apply
将堆栈中的内容恢复到当前分支下。这个命令不同于 git stash pop。该命令不会将内容从对堆栈中删除,也就是该命令能够将堆栈的内容多次运用到工作目录,适合用与多个分支的场景。
应用某一次的存储内容,但不删除改内容(即该存储的内容还是存储在栈内 git apply)
使用方法:git stash apply stash@{$num}
注意:VSCode中git stash list 报错 ‘error: unknown switch `e‘’问题_error: unknown command: switch_PinkM∞n7的博客-CSDN博客
6、git stash drop 从堆栈中移除指定的stash
使用方法:git stash drop stash@{$num}
如上图所示,将最近一次存储释放之后,使用git stash list 查看存储列表,已经由原来的两条存储变成了一条。
7、git stash clear
移除全部的stash
8、git stash show
查看堆栈中最新保存的stash和当前⽬录的差异,显⽰做了哪些改动,默认show第一个存储
9、 git stash show -p
显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
举例说明
- git status 查看当前的分支 状态
如图上所示 ,使用git status 看到当前修改了leetcode/src/com/lc/leetcode/leetcode0.java
文件,若要将该修改保存下来,直接使用git stash命令就可以了。
- git stash save ‘comment some key words’
如果想要 给当前压栈存储的修改添加说明信息(如果没有指定信息,则说明信息为最新的commit信息),使用git stash save "存储的信息",引号内为该次暂存储的说明。如下图所示:
- git stash list 查看当前的暂存列表
4.切换到某个其他分支
git checkout otherBranch
- 在其他分支 修改完代码后,在切换回当前的开发分支 继续开发
6.git stash apply stash@{$num}
如把刚刚暂存的代码继续暴露出来 继续开发
当遇到这个问题时:参考解决办法文章:VSCode中git stash list 报错 ‘error: unknown switch `e‘’问题_error: unknown command: switch_PinkM∞n7的博客-CSDN博客
如本例子中的
这时 我们暂存的代码已恢复出来了,可以基于此继续相关的开发工作了。
版权归原作者 RichardGeek 所有, 如有侵权,请联系我们删除。