与全世界程序员分享你的代码!
1.代码审查不到位,审查效率低下
2.只有编程者本人能看懂的代码直接被部署至正式环境中
3.因低级代码错误导致BUG频繁出现
4.没有机会和其他人互相交流代码,共享知识
没有一个简单高效、能在一天之内添加多个功能的开发流程
GitHub 为我们提供了解决这些问题的机会和功能。
本书旨在指导读者使用GitHub进行高效开发。
1.内容全面,系统讲解GitHub的功能和实用技巧
2.图文直观,一步步演示GitHub的使用方法
3.实战导向,专门搭建实践仓库,邀请读者进行Pull Request 并共同维护
4.包含GitHub的开发流程和辅助工具,适合需要引入GitHub的公司或团队直接使用
GitHub入门与实践 内容简介
《GitHub入门与实践》从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。
《GitHub入门与实践》旨在指导各位读者如何在开发现场使用GitHub进行高效开发,适合所有想要使用GitHub进行开发的程序员或团队阅读。
GitHub入门与实践 目录
第1章 欢迎来到GitHub的世界 1
1.1 什么是GitHub 2
GitHub公司与octocat 2
并不只是Git仓库的托管服务 3
GitHub的使用情况 3
Column 专栏:GitHub与Git的区别 4
1.2 使用GitHub会带来哪些变化 4
协作形式变化 4
在开发者之间引发化学反应的Pull Request 5
对特定用户进行评论 6
GitHub Flavored Markdown 7
Column 专栏:还可以这样写!! 7
能看到更多其他团队的软件 7
与开源软件相同的开发模式 8
1.3 社会化编程 9
1.4 为什么需要社会化编程 10
不要闭目塞听,要接触不同的文化 10
会写代码的程序员更受青睐 11
GitHub最大的特征是“面向人” 11
1.5 GitHub提供的主要功能 12
Git仓库 12
Organization 12
Issue 13
Wiki 13
Pull Request 13
Column 专栏:GitHub上受到瞩目的软件 14
1.6 小结 14
参考资料 14
第2章 Git的导入 17
2.1 诞生背景 18
2.2 什么是版本管理 18
集中型与分散型 19
集中型 19
分散型 19
集中型与分散型哪个更好 20
2.3 安装 21
Mac与Linux 21
Windows 21
组件的选择 22
设置环境变量 22
换行符的处理 23
Git Bash 23
本书所用的环境 24
2.4 初始设置 24
设置姓名和邮箱地址 24
提高命令输出的可读性 25
2.5 小结 25
第3章 使用GitHub的前期准备 27
3.1 使用前的准备 28
创建账户 28
设置头像 29
设置SSH Key 29
添加公开密钥 30
使用社区功能 31
3.2 实际动手使用 31
创建仓库 31
Repository name 32
Description 32
Public、Private 32
Initialize this repository with a README 32
Add .gitignore 33
Add a license 33
连接仓库 33
README.md 33
GitHub Flavored Markdown 34
公开代码 34
clone已有仓库 34
编写代码 35
提交 36
Column 专栏:公开时的许可协议 37
进行push 37
3.3 小结 38
第4章 通过实际操作学习Git 39
4.1 基本操作 40
git init——初始化仓库 40
git status——查看仓库的状态 40
git add——向暂存区中添加文件 41
git commit——保存仓库的历史记录 42
记述一行提交信息 42
记述详细提交信息 42
中止提交 43
查看提交后的状态 43
git log——查看提交日志 43
只显示提交信息的第一行 44
只显示指定目录、文件的日志 44
显示文件的改动 45
git diff——查看更改前后的差别 45
查看工作树和暂存区的差别 45
查看工作树和最新提交的差别 46
4.2 分支的操作 47
git branch——显示分支一览表 48
git checkout -b——创建、切换分支 48
切换到feature-A分支并进行提交 48
切换到master分支 49
切换回上一个分支 50
特性分支 50
主干分支 51
git merge——合并分支 51
git log --graph——以图表形式查看分支 52
4.3 更改提交的操作 53
git reset——回溯历史版本 53
回溯到创建feature-A分支前 53
创建fix-B分支 54
推进至feature-A分支合并后的状态 55
消除冲突 56
查看冲突部分并将其解决 57
提交解决后的结果 57
git commit --amend——修改提交信息 58
git rebase -i——压缩历史 59
创建feature-C分支 59
修正拼写错误 60
更改历史 61
合并至master分支 63
4.4 推送至远程仓库 63
git remote add——添加远程仓库 64
git push——推送至远程仓库 64
推送至master分支 64
推送至master以外的分支 65
4.5 从远程仓库获取 65
git clone——获取远程仓库 65
获取远程仓库 65
获取远程的feature-D分支 66
向本地的feature-D分支提交更改 67
推送feature-D分支 67
git pull——获取最新的远程仓库分支 67
4.6 帮助大家深入理解Git的资料 68
Pro Git 68
LearnGitBranching 69
tryGit 69
4.7 小结 70
第5章 详细解说GitHub的功能 71
5.1 键盘快捷键 72
5.2 工具栏 73
关于UI 73
1LOGO 73
2Notifications 73
3 搜索窗口 73
4Explore 73
5Gist 74
6Blog 74
7Help 74
8 头像、用户名 74
9 Create a new 74
Account settings 75
Sign out 75
5.3 控制面板 75
关于UI 75
①News Feed 76
②Pull Requests 76
③Issues 76
④Stars 76
⑤Broadcast 76
⑥Repositories you contribute to 76
⑦Your Repositories 76
5.4 个人信息 77
关于UI 77
1 用户信息 77
2Popular Repositories 78
3Repositories contributed to 78
4Public contributions 78
5Contribution Activity 78
6Repositories 78
7Public Activity 79
5.5 仓库 80
关于UI 80
①用户名(组织名)/仓库名 80
②Watch/Star/Fork 80
③Code 81
④Issue 81
⑤Pull Requests 81
⑥Wiki 82
⑦Pulse 82
⑧Graphs 82
⑨Network 82
⑩Settings 82
⑪SSH clone URL 82
⑫Clone in Desktop 82
⑬Download ZIP 83
acommits 83
bbranches 83
creleases 83
dcontributors 83
eCompare & review 83
fbranch 83
gpath 84
hFork this project and Create a new file 84
ifiles 84
文件的相关操作 84
Column专栏:通过部分名称搜索文件 85
查看差别 85
查看分支间的差别 85
查看与几天前的差别 86
查看与指定日期之间的差别 87
5.6 Issue 87
简洁且表现力丰富的描述方法 88
语法高亮 89
添加图片 90
添加标签以便整理 90
添加里程碑以便管理 91
Column 专栏:了解贡献时的规则! 92
Tasklist语法 92
通过提交信息操作Issue 93
在相关Issue中显示提交 93
Close Issue 93
将特定的Issue转换为Pull Request 94
5.7 Pull Request 94
Column 专栏:获取diff格式与patch格式的文件 96
Conversation 96
Column 专栏:引用评论 96
Commits 97
Column 专栏:在评论中应用表情 98
Files Changed 98
5.8 Wiki 99
Pages 100
History 101
Column 专栏:在Wiki中显示侧边栏 101
5.9 Pulse 102
active pull requests 103
active issue 103
commits 104
Releases published 104
Unresolved Conversations 104
5.10 Graphs 105
Contributors 105
Commit Activity 106
Code Frequency 106
Punchcard 108
5.11 Network 108
5.12 Settings 109
Options 109
①Settings 109
②Features 110
③GitHub Pages 111
④Danger Zone 111
Collaborators 111
Webhooks & Services 112
Deploy Keys 112
5.13 Notifications 112
5.14 其他功能 114
GitHub Pages 114
GitHub Jobs 114
GitHub Enterprise 114
GitHub API 115
5.15 小结 115
Column 专栏:在Mac的通知中心查看GitHub的Notifications 115
第6章 尝试Pull Request 117
6.1 Pull Request的概要 118
什么是Pull Request 118
Pull Request的流程 118
6.2 发送Pull Request前的准备 119
查看要修正的源代码 120
Fork 120
clone 120
branch 121
为何要在特性分支中进行作业 121
确认分支 121
创建特性分支 121
添加代码 122
提交修改 122
创建远程分支 123
6.3 发送Pull Request 123
6.4 让Pull Request更加有效的方法 126
在开发过程中发送Pull Request进行讨论 126
明确标出“正在开发过程中” 127
不进行Fork直接从分支发送Pull Request 128
6.5 仓库的维护 128
仓库的Fork与clone 129
给原仓库设置名称 129
获取最新数据 130
6.6 小结 130
第7章 接收Pull Request 131
7.1 采纳Pull Request的方法 132
7.2 采纳Pull Request前的准备 133
代码审查 133
查看图片的差别 134
2-up 134
Swipe 135
Onion Skin 135
Difference 136
在本地开发环境中反映Pull Request的内容 136
将接收方的本地仓库更新至最新状态 136
获取发送方的远程仓库 137
创建用于检查的分支 138
合并 138
删除分支 139
Column 专栏:如何提升代码管理技术 139
7.3 采纳Pull Request 139
合并到主分支 140
push修改内容 141
7.4 小结 142
Column 专栏:请协助我们共同创建互相学习的场所 142
第8章 与GitHub相互协作的工具及服务 143
8.1 hub命令 144
概要 144
安装 144
安装 145
确认运行情况 145
设置别名 145
实现shell上的功能补全 146
~/.config/hub 146
命令 146
hub clone 146
hub remote add 147
hub fetch 147
hub cherry-pick 147
hub fork 148
hub pull-request 148
hub checkout 148
hub create 149
hub push 149
hub browse 150
hub compare 150
Column 专栏:让GitHub Enterprise支持hub命令 151
8.2 Travis CI 151
概要 151
实际尝试 152
编写配置文件 152
检测配置文件是否有问题 152
与GitHub集成 153
将Travis CI的结果添加至README.md 155
8.3 Coveralls 156
概要 156
安装 157
注册 157
添加对象仓库 158
编写配置文件 158
添加gem 159
查看报告 160
8.4 Gemnasium 160
8.5 Code Climate 161
8.6 Jenkins 162
概要 162
安装 164
创建bot账户 165
bot账户的权限设置 165
对象为个人账户时 165
对象为Organization账户时 165
检查设置 167
给Jenkins设置SSH密钥 167
初次使用Jenkins时 167
已经在使用Jenkins时 168
GitHub pull request builder plugin的安装 169
Git plugin的设置 170
Github Pull Requests Builder的设置 170
Github server api URL 171
Access Token 171
Admin list 172
job的创建与设置 172
GitHub project 172
源码管理 172
构建触发器 173
构建 174
通知结果 174
测试执行中的状态 175
Failed 175
All is well 175
commit status 175
通过评论进行控制 176
执行任务 176
添加至White list 176
重新执行任务 176
变更指定评论 177
8.7 小结 177
Column 专栏:用Coderwall生成GitHub上的个人信息 178
第9章 使用GitHub的开发流程 179
9.1 团队使用GitHub时的注意事项 180
一切从简 180
项目管理工具与GitHub的区别 180
项目管理工具与GitHub相异的原因 181
不Fork仓库的方法 182
9.2 GitHub Flow——以部署为中心的开发模式 183
9.3 GitHub Flow的流程 184
随时部署,没有发布的概念 184
进行新的作业时要从master分支创建新分支 185
在新创建的分支中进行提交 186
定期push 186
使用Pull Request 187
务必让其他开发者进行审查 187
合并后立刻部署 187
9.4 实践GitHub Flow的前提条件 188
部署作业完全自动化 188
使用部署工具 189
通过Web界面进行部署的工具 189
导入开发时的注意事项 190
重视测试 190
让测试自动化 190
编写测试代码,通过全部测试 190
维护测试代码 190
9.5 模拟体验GitHub Flow 191
Fizzbuzz的说明 191
添加新功能 192
创建新的分支 192
如果尚未clone仓库 192
如果之前clone过仓库 193
创建特性分支 193
实现新功能 194
创建Pull Request 196
接收反馈 196
修正缩进 197
添加测试 199
培育Pull Request 202
Pull Request被合并 202
9.6 团队实践GitHub Flow时的几点建议 203
减小Pull Request的体积 204
准备可供试运行的环境 204
不要让Pull Request中有太多反馈 205
不要积攒Pull Request 206
9.7 GitHub Flow的小结 206
9.8 Git Flow——以发布为中心的开发模式 207
便于理解的标准流程 207
有时显得过于复杂 209
9.9 导入Git Flow前的准备 209
安装git-flow 209
Mac下的安装 209
Linux下的安装 210
确认运行状况 210
仓库的初始设置 210
创建仓库 210
进行git flow的初始设置 211
在远程仓库中也创建develop分支 212
9.10 模拟体验Git Flow 212
master分支与develop分支的区别 213
master分支 213
develop分支 213
在feature中进行的工作 213
创建分支 214
在分支中进行作业 215
发送Pull Request 216
通过代码审查提高代码质量 217
更新本地的develop分支 219
在release分支中进行的工作 220
Column 专栏:设置默认分支 220
创建分支 221
分支内的工作 222
进行发布与合并 222
查看版本标签 224
更新到远程仓库 225
在hotfix分支中进行的工作 226
创建分支 226
创建标签和进行发布 228
从hotfix分支合并至develop分支 230
9.11 Git Flow的小结 232
Column 专栏:版本号的分配规则 232
第10章 将GitHub应用到企业 233
10.1 将世界标准的开发环境引入企业现场 234
企业引入GitHub的好处 234
使用Organization 235
确认Github的安全性 235
注意维护时间 235
查看故障信息 236
10.2 GitHub Enterprise 237
概述 238
引入的好处 238
引入的弊端 239
适合引入GitHub Enterprise的几种情况 239
源代码不可外传 239
Column 专栏:将GitHub的仓库作为Subversion仓库使用 240
希望维护与故障时间可控 240
10.3 能实现Git托管的软件 241
Column 专栏:Bitbucket 241
10.4 小结 242
附录A 支持GitHub的GUI客户端 243
A.1 GitHub for Mac,GitHub for Windows 244
A.2 SourceTree 246
附录B 通过Gist轻松实现代码共享 247
B.1 Gist的特点 248
B.2 创建Gist 248
UI讲解 249
1 Gist description 249
2 name this file 249
3 language 250
4 ACE Editor 250
5 文件 250
6 Add another File 251
7 Create Secret Gist 251
8 Create Public Gist 251
B.3 查看Gist 252
Gist 的菜单 252
①Gist Detail 253
②Revisions 253
③Download Gist 253
④Clone this gist 253
⑤Embed this gist 253
⑥Link to this gist 253
文件的菜单 254
B.4 Your Gists 254
B.5 小结 255
GitHub入门与实践 精彩文摘
GitHub的出现已使当今世界的软件开发现场发生了翻天覆地的变化。在这场可称之为革命的变革当中,中国也毫不例外地受到了影响。本章中,我们将简单介绍将GitHub导入日常开发后会带来哪些变化,供尚未正式使用GitHub的开发者们加以了解。
协作形式变化
此前,用于辅助多人协同工作的软件层出不穷,然而它们中的大部分又一个个退出了历史的舞台。在这类软件中,群件(Groupware)和CRM(Customer Relationship Management,顾客关系管理)等脱颖而出,被全世界的商业人士所用。您所在的公司想必也导入了这类软件。
但是,在以程序员为代表的软件开发者之间,一直都没有一个用来辅助多人协同编程的关键性软件。因此软件开发者们往往要将版本管理系统、BUG跟踪系统、代码审查工具、邮件列表、IRC等众多工具组合在一起,以实现多人协作。
开发者们已对这种软件开发协作模式司空见惯,然而GitHub的出现为其带来了巨大变化。下面,我们就来介绍GitHub的几项功能。
在开发者之间引发化学反应的Pull Request
在GitHub这个聚集了世界各地软件开发者的地方,有个在过去绝对是无法想象的事正在飞速地进行着——素未谋面的开发者们隔着半个地球的距离共同开发软件。我们不妨称之为开发者之间的化学反应吧。这种事成为可能,都要归功于一个名为Pull Request的功能(图1.3)。
图1.3 Pull Request的页面
Pull Request是指开发者在本地对源代码进行更改后,向GitHub中托管的Git仓库请求合并的功能。开发者可以在Pull Request上通过评论交流,例如“修正了BUG,可以合并一下吗?”以及“我试着做了这样一个新功能,可以合并一下吗?”等。通过这个功能,开发者可以轻松更改源代码,并公开更改的细节,然后向仓库提交合并请求。而且,如果请求的更改与项目的初衷相违,也可以选择拒绝合并。
GitHub的Pull Request不但能轻松查看源代码的前后差别,还可以对指定的一行代码进行评论(图1.4)。通过这一功能,开发者们可以针对具体的代码进行讨论,使代码审查的工作变得前所未有地惬意。
图1.4 针对某行代码进行评论的实际截图
对特定用户进行评论
方便和快捷并不是Pull Request的专利。任务管理和BUG报告可以通过Issue进行交互。如果想让特定用户来看,只要用“@用户名”的格式书写,对方便会接到通知(Notifications)A,查看Issue(图1.5)。由于也提供了Wiki功能,开发者可以轻松创建文档,进行公开、共享。Wiki更新的历史记录也在Git中管理,可以让用户轻松更改。
本文来自早川希奈子投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。