Git系列12:git stash暂存当前工作区,轻松切换当前工
在开发过程中,当前的自己工作的workspace发生一些变更,导致进行其他操作的时候会有冲突导致无法执行,同时当前的工作区还需要保留,这时候,就可以用到git stash这个命令了。具体的使用方法如下:
常用git stash命令:
-
查看暂存列表
git stash list [<options>] -
显示做了某个暂存的节点有哪些改动,默认第一个存储,如果要显示其他存贮,后面加stash@{
num替换为要查看的index
git stash show [<options>] [<stash>] -
删除某个暂存节点
git stash drop [-q|--quiet] [<stash>] -
应用某个节点
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
这里有两个操作项可以达到这一目的,分别是pop 和 apply,区别在于apply在应用该节点存储的改动后,从stash列表中delete -
将某个节点的改动,创建一个分支,同时删除此节点
git stash branch <branchname> [<stash>]
以这个stash被创建的那个commit为起点,创建一个叫branchname的分支,然后再在这个分支执行git stash pop --index stash -
保存节点
git stash save "put your message here"
git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
[--pathspec-from-file=<file> [--pathspec-file-nul]]
[--] [<pathspec>…]]
-
删除所有缓存的stash
git stash clear -
git stash create [<message>]
创建一个stash,并返回他的commit对象,但并不在refs中存储这个对象 -
git stash store [-m|--message <message>] [-q|--quiet] <commit>
-
暂存未跟踪或忽略的文件
默认情况下,git stash会缓存下列文件:- 添加到暂存区的修改(staged changes)
- Git跟踪的但并未添加到暂存区的修改(unstaged changes)
但不会缓存以下文件: - 在工作目录中新的文件(untracked files)
- 被忽略的文件(ignored files)
git stash命令提供了参数用于缓存上面两种类型的文件。使用-u或者--include-untracked可以stash untracked文件。使用-a或者--all命令可以stash当前目录下的所有修改。