## 7.3 储藏与清理
### 7.3.1 储藏
储藏会处理工作目录的脏的状态 - 即,修改的跟踪文件与暂存改动 - 然后将未完成的修改保存到一个栈上,而你可以在任何时候重新应用这些改动。
**储藏当前工作目录**
```
$ git stash
$ git stash save
```
**查看储藏列表**
```
$ git stash list
```
**应用储藏**
如果不指定一个储藏的话,默认是最近的一个。
```
$ git stash apply
$ git stash apply stash@{2}
```
可以在一个分支上保存一个储藏,切换到另一个分支,然后尝试重新应用这些修改。 当应用储藏时工作目录中也可以有修改与未提交的文件 - 如果有任何东西不能干净地应用,Git 会产生合并冲突。
**移除储藏**
通过 `drop` 可以删除一个储藏:
```
$ git stash drop stash@{0}
```
也可以运行`git stash pop`来应用储藏然后立即从栈上扔掉它。
**创造性的储藏**
`git stash` 命令的一些选项:
* `--keep-index`:不储藏任何通过 git add 命令已暂存的东西。
* `--include-untracked`或`-u`:一同储藏任何创建的未跟踪文件。
* `--patch`:不储藏所有修改过的任何东西,但是会交互式地提示哪些改动想要储藏、哪些改动需要保存在工作目录中。
**从储藏创建一个分支**
检出储藏工作时创建一个新的分支来应用储藏。
```
$ git stash branch <branch>
```
### 7.3.2 清理工作目录 {#r_git_clean}
通过 `clean` 命令可以清理工作目录。
```
$ git clean
```
默认情况下,命令只会移除没有忽略的未跟踪文件。任何与`.gitiignore`或其他忽略文件中的模式匹配的文件都不会被移除。
**选项**
* `-f`:强制删除。
* `-d`:同时删除空目录。
* `-n` :删除演习,会列出删除命令会删除掉的文件。
* `-x` :一并删除 `.gitignore` 中忽略的文件。
* `-i` :进入交互式页面。
- 介绍
- 第一章 起步
- 1.1 关于版本控制
- 1.2 Git 简史
- 1.3 Git 基础
- 1.4 命令行
- 1.5 安装 Git
- 1.6 初次运行 Git 前的配置
- 1.7 获得帮助
- 第二章 基础
- 2.1 获取仓库
- 2.2 记录每次更新到仓库
- 2.3 查看提交历史
- 2.4 撤销操作
- 2.5 远程仓库的使用
- 2.6 打标签
- 2.7 Git 别名
- 第三章 分支
- 3.1 分支简介
- 3.2 分支的新建与合并
- 3.3 分支管理
- 3.4 分支开发工作流
- 3.5 远程分支
- 3.6 变基
- 第四章 服务器上的 Git
- 4.1 协议
- 4.2 在服务器上搭建 Git
- 4.3 生成 SSH 公钥
- 4.4 配置服务器
- 4.5 Git 守护进程
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管的选择
- 第五章 分布式 Git
- 5.1 分布式工作流程
- 5.2 向一个项目贡献
- 5.3 维护项目
- 第六章 GitHub
- 6.1 账户的创建和配置
- 6.2 对项目做出贡献
- 6.3 维护项目
- 6.4 管理组织
- 6.5 脚本 GitHub
- 第七章 Git 工具
- 7.1 选择修订版本
- 7.2 交互式暂存
- 7.3 储藏与清理
- 7.4 签署工作
- 7.5 搜索
- 7.6 重写历史
- 7.7 重置揭密
- 7.8 高级合并
- 7.9 Rerere
- 7.10 使用Git调试
- 7.11 子模板
- 7.12 打包
- 7.13 替换
- 7.14 凭证存储
- 第八章 自定义 Git
- 8.1 配置 Git
- 8.2 Git 属性
- 8.3 Git 钩子
- 8.4 使用强制策略的一个例子
- 第九章 Git 与其他系统
- 9.1 作为客户端的 Git
- 9.2 迁移到 Git
- 第十章 Git 内部原理
- 10.1 底层命令和高层命令
- 10.2 Git 对象
- 10.3 Git 引用
- 10.4 包文件
- 10.5 引用规格
- 10.6 传输协议
- 10.7 维护与数据恢复
- 10.8 环境变量
