GIT中文资源

时间:2019-02-25 07:46:39
【文件属性】:

文件名称:GIT中文资源

文件大小:4.45MB

文件格式:PDF

更新时间:2019-02-25 07:46:39

git学习

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.10Git-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 总结 . . . . .


网友评论