目录
Git的stash命令是一个非常实用的功能,它允许开发者临时保存工作目录和暂存区的更改,以便能够切换到其他分支或进行其他操作,而不会丢失当前的修改。以下是git stash的详细解析:
基本概念
- 工作目录:当前开发者正在工作的目录,包含了所有已修改但尚未提交的文件。
- 暂存区(Staging Area):也称作索引(Index),是提交前的一个临时区域,用于存放将要被提交的更改。
- Stash:一个用于临时存储工作目录和暂存区更改的栈(Stack)。
参数详解
list
语法 git stash list [<options>]
,与git log功能类似,列出储藏列表,options 参数可以参考git log的参数
show
语法 git stash show [<options>] [<stash>]
,和git show功能类似
save
语法 git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [<message>]
,
- 将本地更改保存到新的储藏队列,
[-p|--patch]
以patch模式提交,允许选择需要保存的块,具体参考git add的--patch模式[-k|--[no-]keep-index]
[不]保留 index 序号[-q|--quiet]
静默执行,即不显示结果[-u|--include-untracked]
储藏时包括未跟踪的文件[-a|--all]
储藏所有文件,包括忽略的文件
建议使用push代替save
push
push可以讲其中几个文件贮藏
语法 git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [-m|--message <message>] [--] [<pathspec>...]]
- 将本地修改保存到新的储藏队列,用法与save基本一致,多了
[--] [<pathspec>...]
可选参数 [--] [<pathspec>...]
使用路径匹配,只有路径匹配下的文件会被储藏,通常用于储藏部分文件- push选项可以被省略,以便快速保存,省略push时,不能使用参数
pop|apply
语法 git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
,取出指定的队列,默认取出最新的队列,pop与apply的区别在于,pop在取出队列后会删除stash中的队列,apply则不会删除
在vs 中对应关系如下:
pop=弹出->应用当前贮藏并删除
appy=应用->仅应用
drop
语法 git stash drop [-q|--quiet] [<stash>]
,删除某个储藏队列,默认删除最新的储藏队列
clear
语法 git stash clear
,删除所有储藏
branch
语法 git stash branch <branchname> [<stash>]
,使用某个储藏队列建立分支,同时删除该队列
[<stash>]
指stash队列的名称,形式为stash@{id}