登录 注册
当前位置:主页 > 资源下载 > 50 > pro git(中文版)下载

pro git(中文版)下载

  • 更新:2024-05-21 17:26:20
  • 大小:4.43MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:项目管理 - 信息化管理
  • 格式:PDF

资源介绍

目录 1 起步1 1.1 关于版本控制. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 本地版本控制系统. . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 集中化的版本控制系统. . . . . . . . . . . . . . . . . . . . 1 1.1.3 分布式版本控制系统. . . . . . . . . . . . . . . . . . . . . 2 1.2 Git 的历史. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Git 基础要点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 直接快照,而非比较差异. . . . . . . . . . . . . . . . . . . 4 1.3.2 近乎所有操作都可本地执行. . . . . . . . . . . . . . . . . . 5 1.3.3 时刻保持数据完整性. . . . . . . . . . . . . . . . . . . . . 5 1.3.4 多数操作仅添加数据. . . . . . . . . . . . . . . . . . . . . 5 1.3.5 三种状态. . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 安装Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.1 从源代码安装. . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.2 在Linux 上安装. . . . . . . . . . . . . . . . . . . . . . . 7 1.4.3 在Mac 上安装. . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.4 在Windows 上安装. . . . . . . . . . . . . . . . . . . . . . 8 1.5 初次运行Git 前的配置. . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 用户信息. . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 文本编辑器. . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3 差异分析工具. . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.4 查看配置信息. . . . . . . . . . . . . . . . . . . . . . . . 10 1.6 获取帮助. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.7 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Git 基础13 2.1 取得项目的Git 仓库. . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 从当前目录初始化. . . . . . . . . . . . . . . . . . . . . . 13 2.1.2 从现有仓库克隆. . . . . . . . . . . . . . . . . . . . . . . 14 2.2 记录每次更新到仓库. . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.1 检查当前文件状态. . . . . . . . . . . . . . . . . . . . . . 14 2.2.2 跟踪新文件. . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.3 暂存已修改文件. . . . . . . . . . . . . . . . . . . . . . . 16 2.2.4 忽略某些文件. . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.5 查看已暂存和未暂存的更新. . . . . . . . . . . . . . . . . . 18 2.2.6 提交更新. . . . . . . . . . . . . . . . . . . . . . . . . . 20 iii 2.2.7 跳过使用暂存区域. . . . . . . . . . . . . . . . . . . . . . 21 2.2.8 移除文件. . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.9 移动文件. . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3 查看提交历史. . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.1 限制输出长度. . . . . . . . . . . . . . . . . . . . . . . . 28 2.3.2 使用图形化工具查阅提交历史. . . . . . . . . . . . . . . . . 29 2.4 撤消操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4.1 修改最后一次提交. . . . . . . . . . . . . . . . . . . . . . 29 2.4.2 取消已经暂存的文件. . . . . . . . . . . . . . . . . . . . . 30 2.4.3 取消对文件的修改. . . . . . . . . . . . . . . . . . . . . . 31 2.5 远程仓库的使用. . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.5.1 查看当前的远程库. . . . . . . . . . . . . . . . . . . . . . 32 2.5.2 添加远程仓库. . . . . . . . . . . . . . . . . . . . . . . . 32 2.5.3 从远程仓库抓取数据. . . . . . . . . . . . . . . . . . . . . 33 2.5.4 推送数据到远程仓库. . . . . . . . . . . . . . . . . . . . . 33 2.5.5 查看远程仓库信息. . . . . . . . . . . . . . . . . . . . . . 34 2.5.6 远程仓库的删除和重命名. . . . . . . . . . . . . . . . . . . 35 2.6 打标签. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.6.1 列显已有的标签. . . . . . . . . . . . . . . . . . . . . . . 35 2.6.2 新建标签. . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.3 含附注的标签. . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.4 签署标签. . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.6.5 轻量级标签. . . . . . . . . . . . . . . . . . . . . . . . . 37 2.6.6 验证标签. . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.6.7 后期加注标签. . . . . . . . . . . . . . . . . . . . . . . . 38 2.6.8 分享标签. . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.7 技巧和窍门. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.7.1 自动完成. . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.7.2 Git 命令别名. . . . . . . . . . . . . . . . . . . . . . . . 41 2.8 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3 Git 分支43 3.1 何谓分支. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2 基本的分支与合并. . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.2.1 基本分支. . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.2.2 基本合并. . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2.3 冲突的合并. . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3 分支管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.4 分支式工作流程. . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4.1 长期分支. . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.4.2 特性分支. . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.5 远程分支. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.5.1 推送. . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.5.2 跟踪分支. . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.5.3 删除远程分支. . . . . . . . . . . . . . . . . . . . . . . . 62 3.6 衍合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 iv 3.6.1 衍合基础. . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.6.2 更多有趣的衍合. . . . . . . . . . . . . . . . . . . . . . . 64 3.6.3 衍合的风险. . . . . . . . . . . . . . . . . . . . . . . . . 66 3.7 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4 服务器上的Git 69 4.1 协议. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.1.1 本地协议. . . . . . . . . . . . . . . . . . . . . . . . . . 69 优点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 缺点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.1.2 SSH 协议. . . . . . . . . . . . . . . . . . . . . . . . . . 70 优点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 缺点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.1.3 Git 协议. . . . . . . . . . . . . . . . . . . . . . . . . . 71 优点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 缺点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.1.4 HTTP/S 协议. . . . . . . . . . . . . . . . . . . . . . . . . 72 优点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 缺点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2 在服务器部署Git . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2.1 将纯目录转移到服务器. . . . . . . . . . . . . . . . . . . . 73 4.2.2 小型安装. . . . . . . . . . . . . . . . . . . . . . . . . . 74 SSH 连接. . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3 生成SSH 公钥. . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.4 架设服务器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.5 公共访问. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6 网页界面GitWeb . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.7 权限管理器Gitosis . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.8 Git 进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.9 Git 托管服务. . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.9.1 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.9.2 建立账户. . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.9.3 建立新仓库. . . . . . . . . . . . . . . . . . . . . . . . . 87 4.9.4 从Subversion 中导入项目. . . . . . . . . . . . . . . . . . 89 4.9.5 开始合作. . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.9.6 项目页面. . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.9.7 派生(forking)项目. . . . . . . . . . . . . . . . . . . . . 92 4.9.8 GitHub 小节. . . . . . . . . . . . . . . . . . . . . . . . . 93 4.10 小节. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 5 分布式Git 95 5.1 分布式工作流程. . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.1.1 集中式工作流. . . . . . . . . . . . . . . . . . . . . . . . 95 5.1.2 集成管理员工作流. . . . . . . . . . . . . . . . . . . . . . 96 5.1.3 司令官与副官工作流. . . . . . . . . . . . . . . . . . . . . 97 5.2 为项目作贡献. . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 v 5.2.1 提交指南. . . . . . . . . . . . . . . . . . . . . . . . . . 98 5.2.2 私有的小型团队. . . . . . . . . . . . . . . . . . . . . . . 99 5.2.3 私有团队间协作. . . . . . . . . . . . . . . . . . . . . . . 104 5.2.4 公开的小型项目. . . . . . . . . . . . . . . . . . . . . . . 108 5.2.5 公开的大型项目. . . . . . . . . . . . . . . . . . . . . . . 112 5.2.6 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.3 项目的管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.3.1 使用特性分支进行工作. . . . . . . . . . . . . . . . . . . . 115 5.3.2 采纳来自邮件的补丁. . . . . . . . . . . . . . . . . . . . . 115 使用apply 命令应用补丁. . . . . . . . . . . . . . . . . . . 115 使用am 命令应用补丁. . . . . . . . . . . . . . . . . . . . 116 5.3.3 检出远程分支. . . . . . . . . . . . . . . . . . . . . . . . 118 5.3.4 决断代码取舍. . . . . . . . . . . . . . . . . . . . . . . . 118 5.3.5 代码集成. . . . . . . . . . . . . . . . . . . . . . . . . . 119 合并流程. . . . . . . . . . . . . . . . . . . . . . . . . . 120 大项目的合并流程. . . . . . . . . . . . . . . . . . . . . . 122 衍合与挑拣(cherry-pick)的流程. . . . . . . . . . . . . . . 122 5.3.6 给发行版签名. . . . . . . . . . . . . . . . . . . . . . . . 123 5.3.7 生成内部版本号. . . . . . . . . . . . . . . . . . . . . . . 124 5.3.8 准备发布. . . . . . . . . . . . . . . . . . . . . . . . . . 125 5.3.9 制作简报. . . . . . . . . . . . . . . . . . . . . . . . . . 125 5.4 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6 Git 工具127 6.1 修订版本(Revision)选择. . . . . . . . . . . . . . . . . . . . . . 127 6.1.1 单个修订版本. . . . . . . . . . . . . . . . . . . . . . . . 127 6.1.2 简短的SHA . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.1.3 关于SHA-1 的简短说明. . . . . . . . . . . . . . . . . . . . 128 6.1.4 分支引用. . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.1.5 引用日志里的简称. . . . . . . . . . . . . . . . . . . . . . 129 6.1.6 祖先引用. . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.1.7 提交范围. . . . . . . . . . . . . . . . . . . . . . . . . . 132 双点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 多点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 三点. . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.2 交互式暂存. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 6.2.1 暂存和撤回文件. . . . . . . . . . . . . . . . . . . . . . . 134 6.2.2 暂存补丁. . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.3 储藏(Stashing) . . . . . . . . . . . . . . . . . . . . . . . . . . 137 6.3.1 储藏你的工作. . . . . . . . . . . . . . . . . . . . . . . . 138 6.3.2 从储藏中创建分支. . . . . . . . . . . . . . . . . . . . . . 139 6.4 重写历史. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.4.1 改变最近一次提交. . . . . . . . . . . . . . . . . . . . . . 140 6.4.2 修改多个提交说明. . . . . . . . . . . . . . . . . . . . . . 141 6.4.3 重排提交. . . . . . . . . . . . . . . . . . . . . . . . . . 142 6.4.4 压制(Squashing)提交. . . . . . . . . . . . . . . . . . . . . 143 vi 6.4.5 拆分提交. . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.4.6 核弹级选项: filter-branch . . . . . . . . . . . . . . . . . . 144 从所有提交中删除一个文件. . . . . . . . . . . . . . . . . . 144 将一个子目录设置为新的根目录. . . . . . . . . . . . . . . . 145 全局性地更换电子邮件地址. . . . . . . . . . . . . . . . . . 145 6.5 使用Git 调试. . . . . . . . . . . . . . . . . . . . . . . . . . . 146 6.5.1 文件标注. . . . . . . . . . . . . . . . . . . . . . . . . . 146 6.5.2 二分查找. . . . . . . . . . . . . . . . . . . . . . . . . . 147 6.6 子模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.6.1 子模块初步. . . . . . . . . . . . . . . . . . . . . . . . . 149 6.6.2 克隆一个带子模块的项目. . . . . . . . . . . . . . . . . . . 151 6.6.3 上层项目. . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.6.4 子模块的问题. . . . . . . . . . . . . . . . . . . . . . . . 153 6.7 子树合并. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 6.8 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 7 自定义Git 157 7.1 配置Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 7.1.1 客户端基本配置. . . . . . . . . . . . . . . . . . . . . . . 157 core.editor . . . . . . . . . . . . . . . . . . . . . . . . . 158 commit.template . . . . . . . . . . . . . . . . . . . . . . . 158 core.pager . . . . . . . . . . . . . . . . . . . . . . . . . 159 user.signingkey . . . . . . . . . . . . . . . . . . . . . . . 159 core.excludesfile . . . . . . . . . . . . . . . . . . . . . . 159 help.autocorrect . . . . . . . . . . . . . . . . . . . . . . 159 7.1.2 Git中的着色. . . . . . . . . . . . . . . . . . . . . . . . . 160 color.ui . . . . . . . . . . . . . . . . . . . . . . . . . . 160 color.* . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.1.3 外部的合并与比较工具. . . . . . . . . . . . . . . . . . . . 160 7.1.4 格式化与空白. . . . . . . . . . . . . . . . . . . . . . . . 163 core.autocrlf . . . . . . . . . . . . . . . . . . . . . . . . 163 core.whitespace . . . . . . . . . . . . . . . . . . . . . . . 164 7.1.5 服务器端配置. . . . . . . . . . . . . . . . . . . . . . . . 164 receive.fsckObjects . . . . . . . . . . . . . . . . . . . . . 164 receive.denyNonFastForwards . . . . . . . . . . . . . . . . . 165 receive.denyDeletes . . . . . . . . . . . . . . . . . . . . . 165 7.2 Git属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 7.2.1 二进制文件. . . . . . . . . . . . . . . . . . . . . . . . . 165 识别二进制文件. . . . . . . . . . . . . . . . . . . . . . . 165 比较二进制文件. . . . . . . . . . . . . . . . . . . . . . . 166 7.2.2 关键字扩展. . . . . . . . . . . . . . . . . . . . . . . . . 168 7.2.3 导出仓库. . . . . . . . . . . . . . . . . . . . . . . . . . 170 export-ignore . . . . . . . . . . . . . . . . . . . . . . . . 170 export-subst . . . . . . . . . . . . . . . . . . . . . . . . 170 7.2.4 合并策略. . . . . . . . . . . . . . . . . . . . . . . . . . 171 7.3 Git挂钩. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 vii 7.3.1 安装一个挂钩. . . . . . . . . . . . . . . . . . . . . . . . 171 7.3.2 客户端挂钩. . . . . . . . . . . . . . . . . . . . . . . . . 171 提交工作流挂钩. . . . . . . . . . . . . . . . . . . . . . . 171 E-mail工作流挂钩. . . . . . . . . . . . . . . . . . . . . . 172 其他客户端挂钩. . . . . . . . . . . . . . . . . . . . . . . 172 7.3.3 服务器端挂钩. . . . . . . . . . . . . . . . . . . . . . . . 173 pre-receive 和post-receive . . . . . . . . . . . . . . . . . 173 update . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.4 Git 强制策略实例. . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.4.1 服务端挂钩. . . . . . . . . . . . . . . . . . . . . . . . . 173 指定特殊的提交信息格式. . . . . . . . . . . . . . . . . . . 174 实现基于用户的访问权限控制列表(ACL)系统. . . . . . . . . . 175 只允许Fast-Forward 类型的推送. . . . . . . . . . . . . . . 177 7.4.2 Client-Side Hooks . . . . . . . . . . . . . . . . . . . . . . 179 7.5 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 8 Git 与其他系统183 8.1 Git 与Subversion . . . . . . . . . . . . . . . . . . . . . . . . . 183 8.1.1 git svn . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 8.1.2 初始设定. . . . . . . . . . . . . . . . . . . . . . . . . . 184 8.1.3 入门. . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 8.1.4 提交到Subversion . . . . . . . . . . . . . . . . . . . . . . 186 8.1.5 拉取最新进展. . . . . . . . . . . . . . . . . . . . . . . . 187 8.1.6 Git 分支问题. . . . . . . . . . . . . . . . . . . . . . . . 188 8.1.7 Subversion 分支. . . . . . . . . . . . . . . . . . . . . . . 189 创建新的SVN 分支. . . . . . . . . . . . . . . . . . . . . . 189 8.1.8 切换当前分支. . . . . . . . . . . . . . . . . . . . . . . . 190 8.1.9 对应Subversion 的命令. . . . . . . . . . . . . . . . . . . 190 SVN 风格的历史. . . . . . . . . . . . . . . . . . . . . . . 190 SVN 日志. . . . . . . . . . . . . . . . . . . . . . . . . . 191 SVN 服务器信息. . . . . . . . . . . . . . . . . . . . . . . 191 略Subversion 之所略. . . . . . . . . . . . . . . . . . . . 192 8.1.10 Git-Svn 总结. . . . . . . . . . . . . . . . . . . . . . . . 192 8.2 迁移到Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 8.2.1 导入. . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 8.2.2 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . 193 8.2.3 Perforce . . . . . . . . . . . . . . . . . . . . . . . . . . 194 8.2.4 自定导入脚本. . . . . . . . . . . . . . . . . . . . . . . . 196 8.3 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 9 Git 内部原理203 9.1 底层命令(Plumbing) 和高层命令(Porcelain) . . . . . . . . . . . . . 203 9.2 Git 对象. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 9.2.1 tree (树) 对象. . . . . . . . . . . . . . . . . . . . . . . 206 9.2.2 commit (提交) 对象. . . . . . . . . . . . . . . . . . . . . 208 9.2.3 对象存储. . . . . . . . . . . . . . . . . . . . . . . . . . 210 viii 9.3 Git References . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 9.3.1 HEAD 标记. . . . . . . . . . . . . . . . . . . . . . . . . . 213 9.3.2 Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 9.3.3 Remotes . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 9.4 Packfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 9.5 The Refspec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 9.5.1 推送Refspec . . . . . . . . . . . . . . . . . . . . . . . . 220 9.5.2 删除引用. . . . . . . . . . . . . . . . . . . . . . . . . . 221 9.6 传输协议. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 9.6.1 哑协议. . . . . . . . . . . . . . . . . . . . . . . . . . . 221 9.6.2 智能协议. . . . . . . . . . . . . . . . . . . . . . . . . . 223 上传数据. . . . . . . . . . . . . . . . . . . . . . . . . . 223 下载数据. . . . . . . . . . . . . . . . . . . . . . . . . . 224 9.7 维护及数据恢复. . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.7.1 维护. . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.7.2 数据恢复. . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.7.3 移除对象. . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.8 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231