Stashes(暂存列表)
通过Stashes(暂存列表)可以临时地保存一些还没有提交的工作,以便在分支上不需要提交未完成工作,就可以清理工作目录。
换而言之, 就是将当前的更改临时搁置起来,在需要的时候,可以返回先前的工作目录状态。
默认情况下,仅储藏当前跟踪文件中的更改,新文件将被忽略。
可以独立地创建和应用多个stash。
常用命令
- 执行
git stash
可以将手当前工作目录状态临时保存,可以执行git stash apply
或git stash pop
可以恢复保存的工作目录状态。 - 执行
git stash
后,git status
将显示无任何改动,但可以通过git stash list
查看保存的stash。
git stash # Temporarily stores all modified tracked files
git stash list # Lists all stashed changesets
git stash pop <stash> # Restores the stashed files, and delete the stashed files
git stash apply <stash> # Restores the stashed files, and reserve the stashed files
git stash clear # Remove all the stashed states
存储当前的修改,但不提交commit
git stash
-u
或者--include-untracked
参数,可以stash untracked文件-a
或者--all
参数,可以stash当前目录下的所有修改-p
或者--patch
参数,可以交互式stash当前目录下的指定修改- 无参数,默认存储当前已跟踪的修改
存储当前的修改,但不提交commit, 并指定标识信息
git stash save <message>
查看stash内容
git stash show
- 无参数, 默认查看最新的stash和最新提交的diff结果
<stash@{n}>
参数, 查看指定stash和最新提交的diff结果-p <stash@{n}>
参数, 查看指定stash和最新提交的diff结果, 已git diff
方式显示
回到某个stash的状态, 如果没有指定参数,将回到最近stash的状态
git stash apply/pop <stash@{n}>
- apply方式,将指定的stash应用到当前工作目录,对应的stash仍保留在stashes(暂存列表
- pop方式,将指定的stash应用到当前工作目录,并删除对应的stash
从指定的stash创建一个新分支,如果没有指定stash,默认为最近的stash
git stash branch <branch-name> <stash@{n}>
删除指定的stash, 如果没有指定stash,默认为最近的stash
git stash drop <stash@{n}>
执行 rebase 之前自动 stash
git rebase --autostash