新書推薦:
《
反操纵心理学:夺回人生主导权 拒绝被操纵
》
售價:HK$
54.8
《
同工异曲:跨文化阅读的启示(修订版)
》
售價:HK$
43.8
《
牛津立法研究手册
》
售價:HK$
358.6
《
制度为什么重要:政治科学中的新制度主义(人文社科悦读坊)
》
售價:HK$
63.8
《
梦醒子:一位华北乡居者的人生(1857—1942))(第2版)
》
售價:HK$
74.8
《
啊哈!原来如此(中译本修订版)
》
售價:HK$
63.8
《
部分识别入门——计量经济学的创新性方法
》
售價:HK$
75.9
《
东野圭吾:变身(来一场真正的烧脑 如果移植了别人的脑子,那是否还是我自己)
》
售價:HK$
64.9
|
編輯推薦: |
一句话推荐
全面掌握如何使用Git的学习指南。
专家推荐
“软件开发人员依赖工具完成工作,不过这通常也意味着我们要具备足够多的知识,否则会很危险。尽管我们花几个小时就能了解Git的基础,不过要真正掌握它的细节,理解它的博大精深,可能还需要很多年。对于你自以为已经了解的知识,《Head First Git》的每一页会给出更全面的描述或解释。不论你的Git水平如何,Raju都能帮助你更好地使用这个绝妙的工具。”
——Nate Schutta
VMware建构师和开发人员布道者
|
內容簡介: |
使用Git的很多人总是靠“技巧”,他们会复制粘贴从网上找到的命令,但并不真正理解Git到底是怎么做的。不过,如果真正遇到困难怎么办?你不能简单应付。利用这本独一无二的实用指南,你会了解Git的做法,并享受其中的乐趣。Raju Gandhi抽丝剥茧地介绍了简单而强大的Git引擎,让你不仅知道怎么做,还会了解为什么这么做。你会掌握分支、合并、提交等概念;了解协作的最佳实践;并充分释放Git的无限潜能。
如果你读过Head First的书,就会知道这会是一本怎样的书。它会采用专门为你的大脑设计的一种生动形象的方式娓娓道来。如果你还没有读过Head First的书,这本书肯定会让你喜出望外。利用这本书,你将通过多感观的学习体验来学习Git,能让你的大脑真正开动起来,而不是一味说教,让你昏昏欲睡。
|
關於作者: |
Raju Gandhi是DefMacro Software, LLC的创始人。他和妻子Michelle、他们的儿子Mason和Micah,还有3个毛孩子(两只狗Buddy和Skye,以及小猫Princess Zara)生活在俄亥俄州的哥伦比亚。Raju是一名顾问、作者和教师,经常受邀在世界各地的大会上发表演讲。他的职业不仅是一名软件开发人员,同时也是一个老师,他的信条是力求简单。他的方法总是理解和解释“为什么”,而不只是“怎么做”。
|
目錄:
|
简要目录
引言 xix
1 Git初入门:认识Git 1
2 分支:多个思路 51
3 调查:调查你的Git存储库 115
4 撤销:改正你的错误 159
5 用Git协作, 第一部分:远程工作 215
6 用Git协作, 第二部分:团队协作 269
7 搜索Git存储库:Git Grep 349
8 用Git让生活更轻松:高级技巧#ProTips 399
附录 其他:我们没有谈到的5大主题 443
索引 453
详细目录
引言
谁适合看这本书? xx
我们知道你在想什么 xxi
元认知:有关思考的思考 xxiii
我们是这么做的 xxiv
可以用下面的方法让你的大脑就范 xxv
必须安装Git(macOS) xxviii
必须安装Git(Windows) xxix
需要一个文本编辑器(macOS) xxx
需要一个文本编辑器(Windows) xxxi
你(绝对)需要一个GitHub账户 xxxii
关于文件和项目组织 xxxiv
技术审校团队 xxxv
致谢 xxxvi
1认识Git Git初入门
为什么需要版本控制 2
命令行简明教程:用pwd了解你在什么位置 7
更多关于命令行:用mkdir创建新目录 8
更多关于命令行:用ls列出文件 9
更多关于命令行(就快结束了):用cd切换目录 10
清理 13
创建你的第一个存储库 14
init命令内幕 15
向Git自我介绍 17
使用Git 19
使用HawtDawg Git存储库 21
提交到底是什么意思? 23
三思而后行 25
Git的3个阶段 26
命令行中使用Git 28
在幕后 29
文件在Git存储库中的多个状态 30
索引就是一个“便笺簿” 33
计算机,状态报告! 35
你建立了历史! 41
2分支多个思路
一切始于一个Email 52
更新餐厅菜单 55
选择……太多的选择! 58
改道 59
退回! 61
分支示意图 63
分支、提交和包含的文件 64
并行工作 67
分支到底是什么? 69
切换分支还是切换目录? 71
合并! 74
阅读#&$!@手册(git branch版) 76
有些合并会快进 79
另一个方向会有问题 80
更多Git设置 81
等一下!你移动了? 84
这是一个合并提交 87
事情并不总是那么顺利 90
有冲突! 91
清理(已合并的)分支 96
删除未合并的分支 99
一般工作流程 100
3调查你的Git存储库
Brigitte在找工作 116
提交还不够 118
镜子镜子告诉我:谁是世界上最美丽的日志? 120
git log如何工作? 124
让git log完成所有工作 125
有什么差异? 129
查看文件差异 130
查看文件差异:一次一个文件 131
查看文件差异:一次一个hunk 132
更容易地查看差异 133
比较暂存变更 136
比较分支 139
比较提交 145
对一个新文件使用diff会怎样? 146
4改正你的错误
策划一个订婚派对 160
判断错误 162
撤销工作目录中的变更 164
撤销索引中的变更 166
从Git存储库删除文件 169
提交删除 170
重命名(或移动)文件 172
编辑提交消息 173
重命名分支 177
建立备选计划 179
HEAD的角色 183
使用HEAD引用提交 185
遍历合并提交 186
撤销提交 188
用reset删除提交 189
3种重置 190
撤销提交的另一种方法 195
回退提交 196
啊哈,大功告成,圆满! 199
5用Git协作,第一部分远程工作
建立Git存储库的另一种方法:克隆 216
各就各位,预备,克隆! 220
克隆时发生了什么? 224
Git是分布式的 226
推送变更 230
了解推送到哪里:remote 235
谢绝拍照:公共与私有提交 237
标准操作过程:分支 239
合并分支:选项1(本地合并) 241
推送本地分支 245
合并分支:选项2(拉取请求) 249
创建拉取请求 250
拉取请求还是合并请求? 254
合并拉取请求 256
接下来呢? 258
6用Git协作,第二部分团队协作
并行工作 271
在Git中……并行工作 272
Git式协作 274
在GitHub上设置两个合作者 275
落后于远程存储库 283
赶上远程存储库(git pull) 285
引入中间人:远程跟踪分支 289
远程跟踪分支存在的理由1:知道推送到哪里 290
推送到远程存储库:小结 298
获取远程跟踪分支 299
远程跟踪分支存在的理由2:从远程存储库获取(所有)更新 300
与其他人协作 304
与其他人协作:小结 308
远程跟踪分支存在的理由3:知道需要推送 309
远程跟踪分支存在的理由4:准备推送 311
git pull就是git fetch git merge! 316
用git fetch git merge,避免用git pull 317
理想场景 320
一个典型的工作流程:开始 321
一个典型的工作流程:准备合并 322
一个典型的工作流程:本地合并,还是发出拉取请求? 323
典型工作流程图 324
清理远程分支 326
7搜索Git存储库Git Grep
更上一个台阶 350
提交历史一览 352
使用git blame 354
利用Git存储库管理器使用git blame 355
搜索Git存储库 357
用grep搜索Git存储库 358
git grep选项 359
git grep标志组合包 360
git blame的缺点 362
git log的“pickaxe”功能(-S) 363
git log -S与blame 364
对git log使用“patch”标志 365
git log的另一个“pickaxe”标志(-G) 368
搜索提交消息 370
检出提交 374
分离HEAD状态 375
分离HEAD状态的寓意 376
使用git bisect搜索提交 380
使用git bisect 381
结束git bisect 383
8用Git让生活更轻松高级技巧#ProTips
配置Git 400
全局.gitconfig文件 401
项目特定的Git配置 404
列出Git配置 406
Git别名是你个人的Git快捷方式 408
调整Git别名的行为 409
告诉Git忽略某些文件和文件夹 412
.gitignore文件的作用 413
管理.gitignore文件 414
示例.gitignore文件 416
早提交,常提交 418
写有意义的提交消息 420
良好的提交消息剖析 421
良好的提交消息剖析:标题 422
良好的提交消息剖析:主体 424
太过挑剔? 425
创建有帮助的分支名 427
在工作流程中集成一个图形用户界面 429
附录其他:我们没有谈到的5大主题
#1 tag(永远记得我) 444
#2 cherry-pick(复制提交) 445
#3 stash(伪提交) 446
#4 reflog (引用日志) 448
#5 rebase(另一种合并方法) 449
|
|