您的位置:

详解git stash list

一、基本介绍

git stash用来暂存当前工作目录的修改,使得当前工作区回到干净的状态。当你要切换分支或者需要处理其他事情时,可以使用git stash暂存一下,之后再回来继续进行工作。

在使用git stash的过程中,可能会有多个stash,这时候就需要利用git stash list来查看stash栈上的stash列表。

二、查看stash列表

我们可以通过下面的命令来查看所有stash:

    $ git stash list
    stash@{0}: On master: add feature A
    stash@{1}: On master: fix bug B

上述输出的含义为:当前stash列表上有两个stash,分别为stash@{0}和stash@{1},它们分别保存了在master分支上添加feature A和修复bug B时的工作目录状态。

三、stash的命名

如果你在使用git stash的时候添加了-m参数,可以给stash命名,这时候git stash list命令就会显示相应的名字。下面是一个例子:

    $ git stash save -m "Add feature A"
    $ git stash save -m "Fix bug B"
    $ git stash list
    stash@{0}: On master: Add feature A
    stash@{1}: On master: Fix bug B

可以看到,这时候stash@{0}和stash@{1}分别显示了具体的名字。

四、stash的信息

通过git stash show命令,可以查看某个stash具体保存的修改:

    $ git stash show stash@{0}
    diff --git a/file1 b/file1
    index 0123456..abcdef 100644
    --- a/file1
    +++ b/file1
    @@ -1,3 +1,4 @@
     line1
     line2
    +line3
     line4

上述命令显示了stash@{0}的具体变动,它包含了对file1文件的修改。

五、删除stash

如果你想删除某个stash,可以通过git stash drop来删除:

    $ git stash drop stash@{0}

上述命令将删除stash@{0},stash@{1}则会成为新的栈顶。如果你想删除所有的stash,可以使用git stash clear。

六、应用stash

如果你想应用某个stash并删除它,可以使用git stash pop:

    $ git stash pop stash@{0}

上述命令将应用stash@{0},之后会从stash栈中删除它。如果你不想删除stash,可以使用git stash apply命令。

七、补丁提交

git stash save命令会将修改保存到暂存区,可以使用git stash branch创建一个新分支,之后在该分支上进行修改和提交。

另外,如果你想将某个stash应用到其他分支上,也可以使用git cherry-pick或者git stash apply与git diff配合来实现。

八、总结

git stash list是一个非常有用的命令,能够帮助我们查看当前保存在stash栈上的所有stash,并且可以查看指定stash包含的修改信息。同时,通过删除、应用stash,我们也可以在不同分支之间对工作目录进行操作,实现patch级别的代码共享。