描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302479918
《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.6
Windows文件系统缓存 56
4.3 初始化仓库 56
4.3.1 git
init 56
4.3.2 git
clone 57
4.4 高级主题 58
4.4.1 git
init揭秘 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 git
status 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.4
word-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 git
blame 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.1
archive 254
11.3.2
bundle 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.1
filter-branch 265
11.5.2
rev-list 265
11.5.3
bisect 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.2
remote命令 297
12.1.3 Git如何与远程环境
交互 299
12.1.4 远程追踪分支 299
12.1.5 git
clone 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.1
applypatch-msg 393
15.4.2
pre-applypatch 393
15.4.3
post-applypatch 393
15.4.4
pre-commit 393
15.4.5
prepare-commit-msg 395
15.4.6
commit-message 396
15.4.7
post-commit 398
15.4.8
pre-rebase 399
15.4.9
post-checkout 399
15.4.10
post-merge 399
15.4.11
pre-push 400
15.4.12
pre-receive 400
15.4.13
update 401
15.4.14
post-receive 401
15.4.15
post-update 402
15.5 其他挂钩 403
15.5.1
push-to-checkout 403
15.5.2
pre-auto-gc 403
15.5.3
post-rewrite 403
15.6 挂钩快速参考 403
15.7 本章小结 405
前 言
欢迎阅读《Git软件开发实战》。如果你的工作或兴趣涉及设计、创建或测试软件,或者涉及管理软件开发生命周期的任意部分,那么有可能你已经听说过Git了,并且在某种程度上,已经尝试过使用和理解它了。本书将帮助你达成该目标。简言之,《Git软件开发实战》旨在帮助你理解和使用Git来完成工作,无论该工作是个人项目还是专业需求。在这一过程中,它还会让Git变成你专业技能的一部分。在本书所有内容中,我已经提供了理解Git所需要知道的背景和概念,同时你将学习如何与之交互。
本部分将为你提供本书的简单介绍。它将阐释本书与其他关于Git的书籍相比的独特之处、本书的目标读者、本书的整体结构和内容,以及它为你提供的其中一些价值。
我鼓励你花几分钟时间阅读本前言。然后,你就能够以你自己的节奏来深入探究这些内容,并且通过文本内容和所包含的实践实验课程来提升你的技能以及理解Git。或者,如果你想要快速查看关于内容范围的额外信息,可以浏览目录。
感谢阅读《Git软件开发实战》。
本书独特之处
尽管市面上已经有了许多关于Git的书籍,但其中大多数都有针对性地将提供该应用程序的技术用途作为其主要且的目标。《Git软件开发实战》会为你提供这方面的内容,但它也会为你提供对于你可能已经知晓的概念方面的Git理解。另外,大多数书籍都没有提供整合它们所描述的概念的实践方法。当你具有实际的示例可以着手处理以便能够消化这些概念并且以你自己的节奏掌握它们时,这样的学习才有效。《Git软件开发实战》包含了连接实验课程,可以通过它们来吸收你刚刚阅读到的知识。
我已经纳入简单、清晰的图例来帮助你可视化关键的理念和工作流。我还在许多章节结尾处引入了“高级主题”小节。这些章节的内容提供了额外的说明来阐释如何使用Git的一些较不为人知的特性以及如何超越标准的Git特性来获得额外的价值。
如果不理解Git,那么很容易就会得到从另一个源管理系统迁移到Git的糟糕体验。为了更为有效,你需要理解Git模型和工作流。你还应该知道,在进行迁移时要注意些什么,以及为何很重要的是,不单单要考虑命令和工作流,还要考虑其基础仓库的结构和范围。我会在《Git软件开发实战》中介绍这方面的所有内容。
本书目标读者
这本书是以我多年来就Git对人们进行培训的经验为基础的;这些人的工作多种多样并且来自许多不同的背景环境——开发人员、测试人员、项目经理、团队管理者、文档编写专家等。我已经在行业会议的许多专题研讨会和企业培训会议上提供了本书中所概述的基本资料。我在美国各地以及各个国家都介绍过它们。我在帮助人们充满信心地使用Git方面已经取得了成功。
在本书中我只进行了一项假设前提:就是你已经至少具有了使用一个源管理系统的经验。使用的是哪一个并不重要:CVS、Subversion、Mercury——任何一个都行。我仅仅是在假设你基本理解源管理系统会做些什么以及像签入和签出代码与分支这样的基础概念。除此之外,你不需要任何预先掌握的知识或经验。并且,即便你具有使用Git或另一个系统的丰富经验,也会在这里找到一些有益的内容。实际上,如果你正在阅读这部分内容,那么你很可能可以被归入以下类别之一:
●
你才开始接触Git并且知道你需要学习它。
●
已经使用过Git,但一直在尝试以使用上一个源控制系统的相同方式来使用它。
●
你已经使用过Git,并且认为你知道“一知半解很危险”。
●
你正在掌握Git的用法,但切实希望理解为何它是这样运行的以及如何真正像预期那样使用它。
●
你在与使用Git或需要学习它的人一起工作或者管理这些人。鉴于这一关系,你需要了解Git并且理解基础概念。
●
你已经听说过Git的潜在好处,因而你对它及其能为你和你为之工作的组织做些什么感兴趣。
你可能实际上会认为你自己归属于这些类别中的多个。不过,你大概仅希望能够完成你的工作(无论该工作是个人目标还是专业目标)。这本书正是基于这一前提来编写的。
Git需要转换思维模式。实际上,它需要一系列思维模式的转换。不过,一旦可以将它与已经知晓的一些事情关联上,那么每一种转换都很容易理解。理解每一种转换将反过来使你变得更具生产力并且掌控这一强大工具的特性——这也就是本书的目的所在。
本书结构和内容
本书被组织为一系列从头开始介绍Git的文章,向你介绍在添加新概念之前,要成为专家所需要知道的并且以之为基础的内容。
在前三章中,我介绍了Git的基础概念:它与其他系统有多大区别、围绕它构建的生态系统、其优势和挑战,以及让你可以理解其工作流并且使用它有效管理内容的模型。本部分将让你基本理解Git的理念、目标以及必要的专业术语。
在本书的其余章节中,我将介绍Git的使用和特性,从执行基本操作到创建仓库以及将变更提交到这些仓库中,一直到创建分支、进行合并以及处理公共仓库中的内容。
注意,我没有立即让你使用Git(如果你希望这样做,可以直接跳到第4章,它会快速让你开始亲身实践Git)。不过,我强烈建议阅读前三章。如果你刚开始接触Git(或者已经使用了一段时间),那么其背景阅读,尤其是第2和第3章中的背景阅读,将提供理解其余章节内容所需的基础。并且即使你之前使用过Git,阅读这些章节也可以让你弄明白你曾经就Git使用所面临的问题,还会为你提供一个更好的思维模型以便开展工作,并且让你形成理解其中一些更为高级的概念的基础。
读者将获得的价值
在整本书的内容中,你都会找到与高效使用Git所需的命令和工作流有关的示例和指导。每一章都包含了将概念与你已经知晓并且理解的内容关联起来的几种方式。除了文本之外,你还将发现许多图例有助于你可视化理解概念。正如我已经提到过的,这本书还通过散布在各个章节的连接实验课程来增加允许你亲身实践Git的特性。这些实验课程旨在强化前面章节文本内容中提到的概念,并且让你主动参与到学习过程中,使得你可以更好地领会这些概念。为了从本书中获得收益,你应该花些时间来完成每一个实验课程——通常仅需要几分钟时间。你将发现,这些简单的步骤会极大地提升你在使用Git时的整体理解和信心。
另外,建议你阅读一下位于一些章节结尾处的“高级主题”部分。你会发现之前可能没有考虑到的利用Git功能的各种方式的说明和理念,或者会弄明白如何使用你一直存有疑虑的特性。
对于后续的实验课程,http://github.com/professional-git网站上为用户提供了具有样本内容的自定义Git仓库。此外,可以在http://github.com/professional-git/hooks上找到后一章中各个挂钩(hook)的代码的可下载副本。如果GitHub不可用,那么可以在www.wrox.com/go/ professionalgit处找到所需的文件。读者也可以通过手机,扫描封底的二维码来下载这些文件。
后续步骤
如果本书听上去正是你所需的,那么我建议持续阅读并且开始融会贯通本书的内容以及进行思维模式的转换,它们将有助于你成功地使用Git。在阅读本书的过程中,你将发现许多理念、见解,还有让你会心一笑的时刻,这些将让你更好地理解Git。具备了这些知识,不久之后你就会成为Git专家。
评论
还没有评论。