ILD

git stash
作者:Herbert Yuan 邮箱:yuanjp@hust.edu.cn
发布时间:2018-5-24 站点:Inside Linux Development

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,如果没有指定,删除最新的。


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.