[TOC] #### 1. 应用场景 --- git stash 命令用于将工作区中的更改和暂存区中的内容储存起来 日常开发中,会经常遇到这种场景 我们正在 dev 分支开发新功能,做到一半时,产品经理过来和我们反馈了一个紧急 bug,需要马上解决,但是做了一半的新功能又不想提交到版本库。这时可以使用 `git stash push` 先将当前进度保存起来,然后去修复 bug,修复完后使用 `git stash apply` 恢复之前保存的进度即可 场景1、需要切换到另一个分支(master)处理 bug ``` git stash push -m '功能开发中' git checkout master ``` 场景2、需要回到新功能编写前的状态,也就是 dev 分支的最新提交记录 ``` git stash push -m '功能开发中' ``` 使用 git stash 的前提必须是版本库中已有提交记录,否则会出现下面提示 ``` $ git stash # 您还没有初始提交 You do not have the initial commit yet ``` 没有可以储存的内容(工作区中没有更改,暂存区中也没有内容) ``` $ git stash # 没有要保存的本地更改 No local changes to save ``` #### 2. 添加储藏 --- 添加储藏 ``` git stash ``` `-m,--message` 添加储藏和备注信息 ``` git stash push -m <message> ``` #### 3. 查看储藏 --- 查看所有储藏(所有分支共享储藏内容,而不是像提交记录每个分支都是独立的) ``` git stash list ``` 查看文件变动差异 ``` # 显示哪些文件变动了几行 git stash show <stash> # 显示更加详细的变动信息,可以看到新增、减少了什么内容 git stash show -p <stash> ``` #### 4. 删除储藏 --- 删除某个储藏 ``` git stash drop <stash> ``` 清除所有储藏 ``` git stash clear ``` #### 5. 使用储藏 --- 应用储藏 ``` # 应用指定的储藏 git stash apply <stash> # 应用并删除指定的储藏 git stash pop <stash> ``` `<stash>` 指的是 `git stash list` 命令输出结果左侧的值,如下图所示  ``` # 错误:您对以下文件的本地更改将被“合并”覆盖 error: Your local changes to the following files would be overwritten by merge: 1.txt # 请在合并前提交或隐藏更改 Please commit your changes or stash them before you merge. ``` #### 6. 常见用法 --- ``` # 添加存储 git stash push -m <message> # 查看所有存储 git stash list # 查看储藏文件差异 git stash show -p <stash> # 应用储藏 git stash apply <stash> # 应用并删除储藏 git stash pop <stash> # 删除指定储藏 git stash drop <stash> # 清空储藏 git stash clear ```