Pro Git

Scott Chacon



1. 起步
1.1. 关于版本控制
1.1.1. 本地版本控制系统
1.1.2. 集中化的版本控制系统
1.1.3. 分布式版本控制系统
1.2. Git 的历史
1.3. Git 基础要点
1.3.1. 直接快照,而非比较差异
1.3.2. 近乎所有操作都可本地执行
1.3.3. 时刻保持数据完整性
1.3.4. 多数操作仅添加数据
1.3.5. 三种状态
1.4. 安装 Git
1.4.1. 从源代码安装
1.4.2. 在 Linux 上安装
1.4.3. 在 Mac 上安装
1.4.4. 在 Windows 上安装
1.5. 初次运行 Git 前的配置
1.5.1. 用户信息
1.5.2. 文本编辑器
1.5.3. 差异分析工具
1.5.4. 查看配置信息
1.6. 获取帮助
1.7. 小结
2. Git 基础
2.1. 取得项目的 Git 仓库
2.1.1. 从当前目录初始化
2.1.2. 从现有仓库克隆
2.2. 记录每次更新到仓库
2.2.1. 检查当前文件状态
2.2.2. 跟踪新文件
2.2.3. 暂存已修改文件
2.2.4. 忽略某些文件
2.2.5. 查看已暂存和未暂存的更新
2.2.6. 提交更新
2.2.7. 跳过使用暂存区域
2.2.8. 移除文件
2.2.9. 移动文件
2.3. 查看提交历史
2.3.1. 限制输出长度
2.3.2. 使用图形化工具查阅提交历史
2.4. 撤消操作
2.4.1. 修改最后一次提交
2.4.2. 取消已经暂存的文件
2.4.3. 取消对文件的修改
2.5. 远程仓库的使用
2.5.1. 查看当前的远程库
2.5.2. 添加远程仓库
2.5.3. 从远程仓库抓取数据
2.5.4. 推送数据到远程仓库
2.5.5. 查看远程仓库信息
2.5.6. 远程仓库的删除和重命名
2.6. 打标签
2.6.1. 列显已有的标签
2.6.2. 新建标签
2.6.3. 含附注的标签
2.6.4. 签署标签
2.6.5. 轻量级标签
2.6.6. 验证标签
2.6.7. 后期加注标签
2.6.8. 分享标签
2.7. 技巧和窍门
2.7.1. 自动完成
2.7.2. Git 命令别名
2.8. 小结
3. Git 分支
3.1. 何谓分支
3.2. 基本的分支与合并
3.2.1. 基本分支
3.2.2. 基本合并
3.2.3. 冲突的合并
3.3. 分支管理
3.4. 分支式工作流程
3.4.1. 长期分支
3.4.2. 特性分支
3.5. 远程分支
3.5.1. 推送
3.5.2. 跟踪分支
3.5.3. 删除远程分支
3.6. 衍合
3.6.1. 衍合基础
3.6.2. 更多有趣的衍合
3.6.3. 衍合的风险
3.7. 小结
4. 服务器上的 Git
4.1. 协议
4.1.1. 本地协议
4.1.2. SSH 协议
4.1.3. Git 协议
4.1.4. HTTP/S 协议
4.2. 在服务器部署 Git
4.2.1. 将纯目录转移到服务器
4.2.2. 小型安装
4.3. 生成 SSH 公钥
4.4. 架设服务器
4.5. 公共访问
4.6. 网页界面 GitWeb
4.7. 权限管理器 Gitosis
4.8. Git 进程
4.9. Git 托管服务
4.9.1. GitHub
4.9.2. 建立账户
4.9.3. 建立新仓库
4.9.4. 从 Subversion 中导入项目
4.9.5. 开始合作
4.9.6. 项目页面
4.9.7. 派生(forking)项目
4.9.8. GitHub 小节
4.10. 小节
5. 分布式 Git
5.1. 分布式工作流程
5.1.1. 集中式工作流
5.1.2. 集成管理员工作流
5.1.3. 司令官与副官工作流
5.2. 为项目作贡献
5.2.1. 提交指南
5.2.2. 私有的小型团队
5.2.3. 私有团队间协作
5.2.4. 公开的小型项目
5.2.5. 公开的大型项目
5.2.6. 小结
5.3. 项目的管理
5.3.1. 使用特性分支进行工作
5.3.2. 采纳来自邮件的补丁
5.3.3. 检出远程分支
5.3.4. 决断代码取舍
5.3.5. 代码集成
5.3.6. 给发行版签名
5.3.7. 生成内部版本号
5.3.8. 准备发布
5.3.9. 制作简报
5.4. 小结
6. Git 工具
6.1. 修订版本(Revision)选择
6.1.1. 单个修订版本
6.1.2. 简短的SHA
6.1.3. 关于 SHA–1 的简短说明
6.1.4. 分支引用
6.1.5. 引用日志里的简称
6.1.6. 祖先引用
6.1.7. 提交范围
6.2. 交互式暂存
6.2.1. 暂存和撤回文件
6.2.2. 暂存补丁
6.3. 储藏(Stashing)
6.3.1. 储藏你的工作
6.3.2. 从储藏中创建分支
6.4. 重写历史
6.4.1. 改变最近一次提交
6.4.2. 修改多个提交说明
6.4.3. 重排提交
6.4.4. 压制(Squashing)提交
6.4.5. 拆分提交
6.4.6. 核弹级选项: filter-branch
6.5. 使用 Git 调试
6.5.1. 文件标注
6.5.2. 二分查找
6.6. 子模块
6.6.1. 子模块初步
6.6.2. 克隆一个带子模块的项目
6.6.3. 上层项目
6.6.4. 子模块的问题
6.7. 子树合并
6.8. 总结
7. 自定义 Git
7.1. 配置 Git
7.1.1. 客户端基本配置
7.1.2. Git中的着色
7.1.3. 外部的合并与比较工具
7.1.4. 格式化与空白
7.1.5. 服务器端配置
7.2. Git属性
7.2.1. 二进制文件
7.2.2. 关键字扩展
7.2.3. 导出仓库
7.2.4. 合并策略
7.3. Git挂钩
7.3.1. 安装一个挂钩
7.3.2. 客户端挂钩
7.3.3. 服务器端挂钩
7.4. Git 强制策略实例
7.4.1. 服务端挂钩
7.4.2. Client-Side Hooks
7.5. 总结
8. Git 与其他系统
8.1. Git 与 Subversion
8.1.1. git svn
8.1.2. 初始设定
8.1.3. 入门
8.1.4. 提交到 Subversion
8.1.5. 拉取最新进展
8.1.6. Git 分支问题
8.1.7. Subversion 分支
8.1.8. 切换当前分支
8.1.9. 对应 Subversion 的命令
8.1.10. Git-Svn 总结
8.2. 迁移到 Git
8.2.1. 导入
8.2.2. Subversion
8.2.3. Perforce
8.2.4. 自定导入脚本
8.3. 总结
9. Git 内部原理
9.1. 底层命令 (Plumbing) 和高层命令 (Porcelain)
9.2. Git 对象
9.2.1. tree (树) 对象
9.2.2. commit (提交) 对象
9.2.3. 对象存储
9.3. Git References
9.3.1. HEAD 标记
9.3.2. Tags
9.3.3. Remotes
9.4. Packfiles
9.5. The Refspec
9.5.1. 推送 Refspec
9.5.2. 删除引用
9.6. 传输协议
9.6.1. 哑协议
9.6.2. 智能协议
9.7. 维护及数据恢复
9.7.1. 维护
9.7.2. 数据恢复
9.7.3. 移除对象
9.8. 总结
n
Next Page
p
Previos Page
h
Book Home
u
Go Up One Level
?
Press ? for Help
esc
Hide Help
Your Ad Here