Git软件开发实战
作者: Brent
出版社:清华大学出版社 2017年10月
简介:
借助Git的强大功能简单化开发周期《Git软件开发实战》一书提供了在使用Git这一流行的软件开发工具方面的有效方法,并且为新用户和资深用户提供了新指导。《Git软件开发实战》包含针对传统系统的广泛探讨,以及独特于Git的有助于在识别和规划差异时借鉴已有技能的注意事项。书中大量的示例和图示旨在强化关键的概念以及增强用户的理解。《Git软件开发实战》专注于实践并且超越了技术教程,能助你将Git模型集成到现实环境的工作流中,是快速提升学习效率的宝贵资源。主要内容◆ 提供基本Git模型和整个工作流处理的清晰理解◆ 包含常用源管理概念和命令的Git版本◆ 展示如何追踪变更、处理分支以及利用Git完整功能的优势◆ 包含现实环境中的示例,以便熟练掌握和更好地消化这些概念◆ 提供有助于可视化关键理念和工作流的简单、清晰图示◆ 重点介绍不常为人知的Git特性以便得到额外的收益◆ 展示如何避免新用户常犯的错误和失误
【目录】
目 录
第Ⅰ部分 理解Git相关概念
第1章 什么是Git 3
1.1 Git的历史 4
1.2 行业标准工具 4
1.3 Git生态系统 5
1.3.1 核心的Git 5
1.3.2 Git托管站点 6
1.3.3 自托管软件包 7
1.3.4 易用的包 7
1.3.5 插件 9
1.3.6 包含Git的工具 9
1.3.7 Git库 9
1.4 Git的优势和挑战 10
1.4.1 优势 10
1.4.2 挑战 12
1.5 本章小结 15
第2章 关键概念 17
2.1 设计概念:面向用户的 17
2.1.1 集中式模型 17
2.1.2 分布式模型 18
2.2 设计概念:内部的 19
2.2.1 差异增量存储 20
2.2.2 快照存储 20
2.2.3 Git的存储需求 21
2.3 仓库设计注意事项 22
2.3.1 仓库范围 23
2.3.2 文件范围 24
2.3.3 共享代码 25
2.4 本章小结 26
第3章 Git升级模型 27
3.1 Git的级别 27
3.1.1 开发-测试-生产和Git 27
3.1.2 移动内容的核心Git命令 34
3.2 本章小结 36
3.3 关于连接实验课程1:
安装Git 36
连接实验课程1:安装Git 37
第Ⅱ部分 使用Git
第4章 配置和设置 43
4.1 在Git中执行命令 43
4.1.1 操作数类型 44
4.1.2 高层命令和底层命令的
对比 45
4.1.3 指定参数 47
4.1.4 自动完成 47
4.2 配置Git 48
4.2.1 告知Git你的身份 49
4.2.2 配置范围 50
4.2.3 默认的编辑器 53
4.2.4 设置行结束符 54
4.2.5 别名 55
4.2.6Windows文件系统缓存 56
4.3 初始化仓库 56
4.3.1 gitinit 56
4.3.2 gitclone 57
4.4 高级主题 58
4.4.1 gitinit揭秘 58
4.4.2 进一步深入了解Git仓库 59
4.4.3 将config命令映射到
配置文件 60
4.4.4 创建参数化别名 61
4.5 本章小结 63
第5章 变得高效 65
5.1 获得帮助 65
5.2 多仓库模型 67
5.3 添加内容以便追踪——add 69
5.4 完成变更——提交 77
5.4.1 先决条件 78
5.4.2 提交范围 79
5.5 将一切结合在一起 79
5.5.1 修正提交 80
5.5.2 提交的结果 82
5.6 高级主题 84
5.6.1 使用--verbose选项 85
5.6.2 完整的消息提交过程 85
5.6.3 自动更正和自动执行 86
5.7 本章小结 87
5.8 关于连接实验课程2:创建和
探究Git仓库并且管理内容 87
连接实验课程2:创建和探究Git
仓库并且管理内容 89
第6章 追踪变更 95
6.1 gitstatus 95
6.1.1 具有状态的工作流示例 96
6.1.2 status命令的简要形式 100
6.2 git diff 102
6.2.1 Git中的重要符号名称 102
6.2.2 如何思考Git进行对比的
方法 102
6.2.3 仅显示有差异的文件
名称 107
6.2.4word-diff 107
6.2.5 忽略非关键变更 107
6.2.6 对比两次提交 109
6.2.7 可视化对比 111
6.2.8 其他的对比技巧 114
6.3 本章小结 115
6.4 连接实验课程3:通过文件
状态生命周期追踪内容 116
连接实验课程3:通过文件状态
生命周期追踪内容 117
第7章 处理随时间推移而出现的
变更以及使用标签 121
7.1 log命令 121
7.1.1 常用的显示和过滤选项 122
7.1.2 时间限制选项 123
7.1.3 按文件和路径显示历史 124
7.1.4 日志输出格式 125
7.1.5 搜索历史 126
7.2 gitblame 127
7.3 可视化地查看历史 130
7.4 标签 131
7.4.1 查看标签详情 132
7.4.2 修改标签 132
7.4.3 简单的标签示例 133
7.5 撤消历史中的变更 134
7.5.1 reset——回滚变更 134
7.5.2 完全重置本地环境 135
7.5.3 revert——消除变更 136
7.6 高级主题 139
7.6.1 签署提交和标签 139
7.6.2 引用日志 141
7.7 本章小结 143
7.8 关于连接实验课程4:使用
Git历史、标签和别名 143
连接实验课程4:使用Git历史、
标签和别名 145
第8章 处理本地分支 149
8.1 什么是分支? 149
8.1.1 来自另一个源管理系统的
示例 150
8.1.2 分支的Git模型 150
8.1.3 创建一个分支 151
8.1.4 签出一个分支 152
8.1.5 将内容添加到分支 153
8.1.6 一个工作目录——多个
分支 154
8.1.7 获得关于分支的信息 157
8.1.8 删除或重命名一个分支 158
8.1.9 使用分支进行开发 161
8.2 高级主题 167
8.2.1 签出非分支提交 168
8.2.2 签出单独的文件 173
8.3 本章小结 174
8.4 连接实验课程5:处理
分支 174
连接实验课程5:处理分支 175
第9章 合并内容 177
9.1 合并的基础 177
9.1.1 merge命令 178
9.1.2 为合并做准备 178
9.1.3 合并的类型 178
9.1.4 变基——合并历史 182
9.1.5 樱桃拣选 185
9.1.6 樱桃拣选和变基之间的
差异 188
9.1.7 合并操作 189
9.2 处理冲突 192
9.2.1 合并处理是一种状态 192
9.2.2 冲突的错误消息 193
9.2.3 终止操作 194
9.2.4 处理冲突——工作流 194
9.2.5 解决选项和策略 198
9.3 可视化合并 203
9.3.1 选择一款合并工具 205
9.3.2 让合并工具可供Git使用 206
9.4 高级主题 206
9.4.1 用于冲突标记的可选
样式 207
9.4.2 高级变基场景 208
9.4.3 交互式变基 213
9.5 本章小结 220
9.6 连接实验课程6:合并实践 220
连接实验课程6:合并实践 221
第10章 Git中的支持文件 223
10.1 Git属性文件 224
10.1.1 Git属性文件的作用 224
10.1.2 Git属性的范围 224
10.1.3 文件格式 226
10.1.4 常见用例 226
10.1.5 获取文件的属性信息 232
10.2 Git忽略文件 233
10.2.1 Git忽略的范围 233
10.2.2 文件格式 234
10.2.3 获取文件的忽略信息 236
10.3 本章小结 236
第11章 用Git做更多的事情 239
11.1 修改本地环境中文件和
目录的布局 239
11.1.1 储藏 240
11.1.2 暂存命令 246
11.1.3 mv 246
11.1.4 rm 247
11.2 用于搜索的命令 248
11.2.1 grep 248
11.2.2 Git日志搜索 251
11.3 为变更处理补丁和存档 253
11.3.1archive 254
11.3.2bundle 254
11.3.3 通过电子邮件共享
补丁 256
11.3.4 apply 257
11.3.5 am 257
11.3.6 用邮件发送补丁文件 258
11.4 用于清理的命令 260
11.4.1 clean 260
11.4.2 gc 262
11.4.3 notes 263
11.5 高级主题 265
11.5.1filter-branch 265
11.5.2rev-list 265
11.5.3bisect 272
11.5.4 rerere 279
11.6 本章小结 287
11.7 连接实验课程7:删除、
重命名和储藏 287
连接实验课程7:删除、重命名和
储藏 289
第12章 理解远程——分支和操作 293
12.1 远程 293
12.1.1 远程访问协议 295
12.1.2remote命令 297
12.1.3 Git如何与远程环境
交互 299
12.1.4 远程追踪分支 299
12.1.5 gitclone 300
12.1.6 查看关于远程分支的
信息 303
12.1.7 push 307
12.1.8 fetch 315
12.1.9 pull 317
12.2 本章小结 320
12.3 连接实验课程8:设置
GitHub账户并且克隆仓库 320
连接实验课程8:设置GitHub账户
并且克隆仓库 321
第13章 理解远程——变更工作流 323
13.1 Git中基本的冲突以及
合并解决工作流 324
13.2 托管仓库 336
13.2.1 用于使用Git进行
协作的模型 336
13.2.2 对所有内容进行汇总 340
13.3 本章小结 341
13.4 连接实验课程9:对远程
仓库使用整体工作流 342
连接实验课程9:对远程仓库使用
整体工作流 343
第14章 处理Git中的树和模块 347
14.1 工作树 347
14.1.1 添加一棵工作树 348
14.1.2 列出工作树 350
14.1.3 精简工作树 351
14.2 子模块 352
14.2.1 理解子模块如何工作 353
14.2.2 添加子模块 353
14.2.3 判定子模块状态 355
14.2.4 处理多个子模块 359
14.2.5 从子模块的远程更新
子模块 359
14.2.6 查看子模块差异 361
14.2.7 超级项目与子模块
对比 362
14.2.8 子模块的问题 364
14.2.9 更新子模块引用 365
14.2.10 在超级项目被更新后
更新子模块 366
14.2.11 推送来自子模块的
变更 368
14.2.12 子模块与合并 369
14.2.13 注销一个子模块 370
14.3 子树 370
14.3.1 添加一个项目作为
子树 371
14.3.2 更新子树 374
14.3.3 使用子树分隔功能 374
14.3.4 从分隔内容中创建
一个新的项目 375
14.3.5 子树推送 376
14.4 本章小结 376
14.5 连接实验课程 376
14.5.1 连接实验课程10:使用
工作树 376
14.5.2 连接实验课程11:使用
子模块 376
14.5.3 连接实验课程12:使用
子树 377
连接实验课程10:使用工作树 379
连接实验课程11:使用子模块 381
连接实验课程12:使用子树 385
第15章 使用Git挂钩程序扩展
Git功能 389
15.1 安装挂钩 389
15.2 更新挂钩 390
15.3 常用挂钩属性 391
15.3.1 挂钩域 391
15.3.2 控制工作流的返回码 391
15.3.3 工作目录访问 392
15.3.4 环境变量 392
15.4 挂钩描述 392
15.4.1applypatch-msg 393
15.4.2pre-applypatch 393
15.4.3post-applypatch 393
15.4.4pre-commit 393
15.4.5prepare-commit-msg 395
15.4.6commit-message 396
15.4.7post-commit 398
15.4.8pre-rebase 399
15.4.9post-checkout 399
15.4.10post-merge 399
15.4.11pre-push 400
15.4.12pre-receive 400
15.4.13update 401
15.4.14post-receive 401
15.4.15post-update 402
15.5 其他挂钩 403
15.5.1push-to-checkout 403
15.5.2pre-auto-gc 403
15.5.3post-rewrite 403
15.6 挂钩快速参考 403
15.7 本章小结 405