一、基本介绍
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级别的代码共享。