git stash,将脏工作区的改变储存起来。
语法
1 2 3 4 5 6 7 8 9 10 11 | git stash list [<options>] git stash show [<stash>] git stash drop [-q|--quiet] [<stash>] git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>] git stash branch <branchname> [<stash>] git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [-m|--message <message>] [--] [<pathspec>…]] git stash clear git stash create [<message>] git stash store [-m|--message <message>] [-q|--quiet] <commit> |
描述
使用git stash来记录工作区和暂存区的当前状态,回到一个干净的工作目录。这个命令将本地改变存储起来,将工作区恢复到HEAD状态。
这个命令存储起来的改变可以使用git stash list列出来,使用git statsh show来查看。使用git stash apply来恢复。调用git stash不带任何参数等价于git stash push。一个stash默认被列为WIP on branchname,但是你可以给出更具有描述性的名字,在创建的时候。
你创建的最新的stash存储在refs/stash中。stash通过 stash@{n}引用,n越小越新。
选项:
git stash push [options] 选项如上述语法中所示。
存储你本地的改动到一个新的stash条目,然后将他们回退到HEAD(工作区和index)。为了快速的创建快照,可以省略push,此时不允许有任何参数。例外是允许-p和pathspecs。当给出pathspecs时,只存储这些路径指定的文件的。索引和工作区也只回退这些文件到HEAD状态。
--keep-index
index的改变不动。
--include-untracked
所有untracked files也被存储,然后他们将被git clean清除掉。使工作区保持非常干净的状态。
--all
不仅仅是untracked files,ignored files也被存储,并从工作区清除掉。
git stash list [options]
列出stash条目。接收git log的同样的参数,来控制显示什么。
git stash show [<stash>] [options]
显示stash条目记录的stash内容与对应commit之间的改变。它接收git diff同样的参数,来控制显示的格式。
git stash pop [--index] [-q] [<stash>]
将一个stash从stash list中移除,并将其应用到当前工作树。执行和git stash push相反的操作。工作树必须匹配索引。
应用可能会由于冲突失败,此时stash不会被从list中移除,你需要手动解决冲突,并执行git stash drop。
--index
不仅恢复工作树,也恢复索引,注意没有使用该选项,索引将不会被恢复。
当没有给出stash时 ,默认stash@{0}
git stash apply [--index] [-q] [<stash>]
和pop类似,但是不从list中删除。不像pop,stash可以为任何commit,该commit用来创建stash。
git stash branch <branchname> [<stash>]
从创建stash的commit点创建一个叫branchname的分支,并切换到该分支,将stash应用到该分支。stash将被从list中工移除。
git stash clear
删除所有的stash条目
git stash drop [-q] [<stash>]
删除单个stash,如果没有指定,删除最新的。