本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。
作者简介 大塚弘记 将敏捷软件开发导入开发现场的领军人物,以顾问身份就Web应用的开发及服务指导过多家企业和团队。曾为多家企业和团队导入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
|