Git - 暂存列表(stashes)

Stashes(暂存列表)

通过Stashes(暂存列表)可以临时地保存一些还没有提交的工作,以便在分支上不需要提交未完成工作,就可以清理工作目录。
换而言之, 就是将当前的更改临时搁置起来,在需要的时候,可以返回先前的工作目录状态。
默认情况下,仅储藏当前跟踪文件中的更改,新文件将被忽略。
可以独立地创建和应用多个stash。

常用命令

  • 执行git stash可以将手当前工作目录状态临时保存,可以执行git stash applygit 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

posted @ 2019-12-23 23:35  Anliven  阅读(2424)  评论(0编辑  收藏  举报