您现在的位置是:首页 >技术教程 >Git Stash 命令详解网站首页技术教程

Git Stash 命令详解

RichardGeek 2023-06-26 04:00:02
简介Git Stash 命令详解

目录

背景

用途

常见方法

举例说明


背景

        使用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

 

举例说明

1. git status  查看当前的分支 状态

如图上所示 ,使用git status 看到当前修改了leetcode/src/com/lc/leetcode/leetcode0.java
文件,若要将该修改保存下来,直接使用git stash命令就可以了。

2. git stash save ‘comment some key words’

如果想要 给当前压栈存储的修改添加说明信息(如果没有指定信息,则说明信息为最新的commit信息),使用git stash save "存储的信息",引号内为该次暂存储的说明。如下图所示:

3. git stash list 查看当前的暂存列表 

4.切换到某个其他分支 

git checkout  otherBranch

5. 在其他分支 修改完代码后,在切换回当前的开发分支 继续开发

6.git stash apply stash@{$num} 

如把刚刚暂存的代码继续暴露出来 继续开发

当遇到这个问题时:参考解决办法文章:VSCode中git stash list 报错 ‘error: unknown switch `e‘’问题_error: unknown command: switch_PinkM∞n7的博客-CSDN博客 

 如本例子中的

 这时 我们暂存的代码已恢复出来了,可以基于此继续相关的开发工作了。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。