编辑推荐
学习Git,让你了解顶ji的项目开发理念。本书引导读者掌握Git实用技巧,加强项目版本管理经验。学习本书,可以帮助读者更好地运用Git,提升软件开发效率。
内容简介
Git是一 款免费、开源的分布式版本控制系统,可以对或大或小的项目进行高效的版本管理。时 * 今 日,Git已经在项目开发领域发挥着重要作用,并且得到了广泛的应用。
本书旨在帮助读者深入理解Git架构,以及其内部的理念、行为和* 佳实践。全书共分为12章,从基础知识讲起,陆续介绍了项目历史管理、使用Git进行程序开发、工作区管理、Git协作开发、分支应用进阶、集成变更、历史记录管理、子项目管理、Git的定制和扩展、Git日常管理、Git* 佳实践等内容。
本书面向所有的Git用户,全面细致地向读者介绍有关Git的各项实用技巧,充分发掘它的潜力,更好地实现项目版本管理。
作者简介
Jakub Nar?bski自Git诞生之初参与了Git的开发工作。他是gitweb子系统(Git原始Web界面)的主要贡献者之一,是非官方的gitweb维护者。他创造、发布并分析了2007年到2012年的年度Git用户调查。您可以在Git Wiki上找到对这些调查的分析内容。他经常在技术问答网站StackOverflow上和他人分享自己的技术专长。
他是Eric Sink的Version Control by Example一书的审校者之一,这也是他在Git领域占有一席之地的原因。
他是波兰托伦哥白尼大学数学和计算机科学系的助理教授。他选择使用Git作为个人和专业工作的版本控制系统,将其作为课程作业的一部分讲授给数学和计算机科学系的学生。
目录
* 1章 Git应用入门1
1.1 版本控制与Git1
1.2 Git简易示例2
1.2.1 创建版本库2
1.2.2 创建Git版本库3
1.2.3 克隆版本库并添加注释4
1.2.4 发布修改7
1.2.5 查看历史版本7
1.2.6 重命名、移动文件10
1.2.7 更新版本库(合并)11
1.2.8 创建标签12
1.2.9 解决合并冲突14
1.2.10 添加和移除文件17
1.2.11 撤销对单个文件的修改18
1.2.12 创建新分支19
1.2.13 合并分支(无冲突)20
1.2.14 撤销未发布的合并21
1.3 小结22
* 2章 项目历史管理23
2.1 有向无环图23
2.1.1 提交整个工作目录25
2.1.2 分支和标签26
2.1.3 分支点28
2.1.4 合并提交28
2.2 修订内部查询28
2.2.1 HEAD—* 新的修订版本29
2.2.2 分支和标签的引用29
2.2.3 SHA-1哈希码及其简化标识符30
2.2.4 父引用32
2.2.5 反向父引用—git的输出信息描述32
2.2.6 reflog的简称33
2.2.7 上游远程跟踪分支34
2.2.8 根据提交信息查询修订34
2.3 修订区间查询35
2.3.1 单个修订内部查询35
2.3.2 双点符号35
2.3.3 多点符号—包含和排除修订37
2.3.4 单个修订的修订区间38
2.3.5 三点符号38
2.4 历史记录查询40
2.4.1 限制修订数量40
2.4.2 元数据查询40
2.4.3 修订内部变更查询43
2.4.4 变更类型查询44
2.5 单个文件历史记录44
2.5.1 路径约束45
2.5.2 历史简化46
2.5.3 blame—查看文件历史记录详情46
2.6 使用git bisect命令查找bug48
2.7 日志的查询和格式化输出50
2.7.1 预定义和用户自定义输出格式51
2.7.2 包含、格式化和统计变更52
2.7.3 贡献统计54
2.7.4 查看文件修订55
2.8 小结56
第3章 使用Git进行程序开发58
3.1 新建提交58
3.1.1 新建提交的DAG视图59
3.1.2 索引—提交的暂存区60
3.1.3 查看已提交的变更61
3.1.4 可查询的提交71
3.1.5 修改提交73
3.2 使用分支75
3.2.1 新建分支76
3.2.2 孤儿分支77
3.2.3 分支的查询和切换77
3.2.4 分支列表80
3.2.5 分支的回退和复位80
3.2.6 分支的删除82
3.2.7 分支的重命名83
3.3 小结83
第4章 工作区管理84
4.1 忽略文件85
4.1.1 将文件刻意标记为不跟踪的86
4.1.2 确定忽略文件类型88
4.1.3 忽略文件列表89
4.1.4 忽略跟踪文件内的变更90
4.2 文件属性91
4.2.1 配置Diff和merge94
4.2.2 文件转换(内容过滤)97
4.2.3 关键字替换表达式99
4.2.4 其他内置属性101
4.2.5 属性宏定义101
4.3 使用reset命令修复错误102
4.3.1 回退分支head102
4.3.2 重置分支head和索引103
4.3.3 丢弃变更和回退分支105
4.3.4 安全模式重置—保留用户变更106
4.4 隐藏暂存变更108
4.4.1 使用git stash108
4.4.2 隐藏和暂存区109
4.4.3 暂存探幽110
4.5 管理工作区和暂存区112
4.5.1 查看文件和目录113
4.5.2 搜索文件内容114
4.5.3 撤销对文件的跟踪、暂存和修改115
4.5.4 文件版本回退116
4.5.5 清理工作区117
4.6 多工作目录118
4.7 小结119
第5章 Git协作开发120
5.1 协作工作流120
5.1.1 空版本库121
5.1.2 和其他版本库交互122
5.1.3 中心式工作流122
5.1.4 对等网络或者分支工作流123
5.1.5 维护者和集成管理工作流124
5.1.6 层级式(主从式)工作流125
5.2 远程版本库管理126
5.2.1 原生的远程版本库127
5.2.2 浏览远程版本库127
5.2.3 新建远程版本库128
5.2.4 远程版本库信息更新129
5.2.5 兼容不规则工作流131
5.3 传输协议132
5.3.1 本地传输132
5.3.2 智能传输134
5.3.3 使用bundle进行离线传输136
5.3.4 远程版本库传输助手142
5.3.5 凭据 密码管理145
5.4 发布变更到上游148
5.4.1 推送变更到公共版本库148
5.4.2 生成pull请求149
5.4.3 交换补丁149
5.5 信任链151
5.5.1 内容地址存储152
5.5.2 轻量级标签、附注标签和签名标签152
5.5.3 签名提交154
5.5.4 合并签名标签(合并标签)155
5.6 小结157
第6章 分支应用进阶158
6.1 分支的类型和用途158
6.1.1 长期或者永 久性分支159
6.1.2 短期分支164
6.2 分支工作流和发布工程165
6.2.1 预览或者主干分支工作流165
6.2.2 节点或者渐进稳定性分支工作流166
6.2.3 主题分支工作流168
6.2.4 Git流—一种成功的Git分支模型172
6.2.5 修复安全问题173
6.3 远程版本库上分支间的交互175
6.3.1 上游和下游175
6.3.2 远程跟踪分支和refspec176
6.3.3 fetch、pull和push177
6.3.4 拉取、推送分支和标签179
6.3.5 推送模式应用181
6.4 小结185
第7章 集成变更186
7.1 集成变更的方法186
7.1.1 合并分支187
7.1.2 拷贝和应用变更集191
7.1.3 分支变基194
7.2 解决合并冲突197
7.2.1 三路合并198
7.2.2 检测失败的合并操作199
7.2.3 避免合并冲突203
7.2.4 处理合并冲突205
7.3 小结207
第8章 历史记录管理209
8.1 Git内部机制简介210
8.1.1 Git对象210
8.1.2 Git的底层命令和高层命令213
8.1.3 Git环境变量213
8.2 重写修订历史216
8.2.1 编辑* 后一次提交217
8.2.2 交互式变基218
8.2.3 外部工具—补丁管理接口224
8.2.4 使用git filter-branch进行脚本化重写225
8.2.5 用于重写大型项目历史记录的外部工具231
8.2.6 重写已发布历史的风险232
8.3 历史记录的非重写式编辑236
8.3.1 还原提交236
8.3.2 使用笔记存储附加信息242
8.3.3 置换机制应用249
8.4 小结253
第9章 子项目管理—构建活动框架254
9.1 管理库和框架的依赖255
9.1.1 Git外部依赖管理256
9.1.2 手工导入项目代码257
9.1.3 包含子项目代码的Git子树258
9.1.4 子模块解决方案—版本库嵌套267
9.1.5 将子文件夹迁移到子树或者子模块中279
9.1.6 子树和子模块280
9.2 大型Git版本库管理283
9.2.1 处理包含大量历史记录的版本库283
9.2.2 处理包含大量二进制文件的版本库285
9.3 小结287
* 10章 Git的定制和扩展288
10.1 Git与命令行289
10.1.1 Git命令行提示符289
10.1.2 Git命令自动补全292
10.1.3 Git命令自动校正293
10.1.4 命令行美化294
10.1.5 命令行工具替代方案294
10.2 图形化接口295
10.2.1 图形化工具种类295
10.2.2 图形化的diff和merge工具296
10.2.3 图形化接口示例298
10.3 配置Git299
10.3.1 命令行选项和环境变量299
10.3.2 Git配置文件299
10.3.3 使用gitattribute配置单个文件309
10.4 Git自动化钩子311
10.4.1 安装Git钩子312
10.4.2 版本库模板312
10.4.3 客户端钩子313
10.4.4 服务端钩子318
10.5 Git扩展319
10.5.1 Git命令行别名319
10.5.2 添加新的Git命令321
10.5.3 凭据助手和远程版本库助手322
10.6 小结322
* 11章 Git日常管理323
11.1 版本库维护324
11.2 数据恢复和故障诊断325
11.2.1 恢复已丢弃的提交记录325
11.2.2 Git故障诊断327
11.3 Git服务端配置328
11.3.1 服务端钩子328
11.3.2 使用钩子实现Git强制策略332
11.3.3 签名推送334
11.3.4 Git版本库服务335
11.3.5 Git版本库管理工具339
11.3.6 版本库托管应用技巧340
11.4 改进开发工作流342
11.5 小结342
* 12章 Git* 佳实践343
12.1 启动项目343
12.1.1 将工作分配到版本库344
12.1.2 选择协作工作流344
12.1.3 选择需要实行版本控制的文件344
12.2 推进项目345
12.2.1 使用主题分支345
12.2.2 确定工作背景346
12.2.3 将变更分解成独立的逻辑单元347
12.2.4 编写简洁易读的注释347
12.2.5 为提交变更做好准备349
12.3 集成变更349
12.3.1 提交和描述变更349
12.3.2 审核变更的艺术351
12.3.3 处理审核结果和评论353
12.4 其他注意事项353
12.4.1 不用慌,一切几乎都是可以恢复的354
12.4.2 不要修改已发布的历史记录354
12.4.3 版本发布的数字化和
标签化354
12.4.4 尽可能自动化355
12.5 小结355
Git高手之路 电子书 下载 mobi epub pdf txt