编辑推荐
与全世界程序员分享你的代码!
1.代码审查不到位,审查效率低下
2.只有编程者本人能看懂的代码直接被部署至正式环境中
3.因低级代码错误导致BUG频繁出现
4.没有机会和其他人互相交流代码,共享知识
○ 没有一个简单高效、能在一天之内添加多个功能的开发流程
GitHub 为我们提供了解决这些问题的机会和功能。
--------------------------------------------------------
本书旨在指导读者使用GitHub进行高效开发。
1.内容全面,系统讲解GitHub的功能和实用技巧
2.图文直观,一步步演示GitHub的使用方法
3.实战导向,专门搭建实践仓库,邀请读者进行Pull Request 并共同维护
4.包含GitHub的开发流程和辅助工具,适合需要引入GitHub的公司或团队直接使用
内容简介
《GitHub入门与实践》从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。
《GitHub入门与实践》旨在指导各位读者如何在开发现场使用GitHub进行高效开发,适合所有想要使用GitHub进行开发的程序员或团队阅读。
作者简介
大塚弘记,将敏捷软件开发导入开发现场的领军人物,以顾问身份就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
gitremote 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 1
前言/序言
《代码的炼金术:从零构建你的数字王国》 内容简介 在这本《代码的炼金术:从零构建你的数字王国》中,我们不探讨 GitHub 的具体操作指令,不深入讲解其“提交”、“分支”、“合并”等具体工作流程,也不纠缠于“拉取请求”的细节。这本书,将带你走进的是代码的世界,感受创造的魔力,掌握构建数字世界的基石——编程的精髓。我们将剥离工具的束缚,回归编程语言最本质的思考方式,让你真正理解“为什么”要这么写,以及“如何”写出优雅、高效、可维护的代码。 第一篇:思维的基石——编程的哲学与逻辑 在开始任何实际编码之前,理解编程的底层逻辑至关重要。我们首先会从“计算思维”的角度出发,探讨如何将现实世界的问题分解成计算机可以理解的步骤。这包括: 抽象的艺术: 如何从繁杂的信息中提炼出核心概念,形成模型,这是所有软件开发的基础。我们将通过生动的比喻和实际的例子,让你领会抽象的力量。比如,如何将“一碗面”的制作过程抽象成一系列指令,让计算机也能“制作”。 算法的智慧: 深入理解算法不仅仅是记住一堆公式,而是掌握解决问题的策略。我们将剖析几种经典但易于理解的算法思想,比如“查找”和“排序”,但重点不在于它们在特定语言中的实现,而在于它们背后的逻辑和效率考量。我们会讨论为什么有些方法比其他方法更快,以及在不同场景下如何选择最优方案。 数据结构的语言: 数据是数字世界的原材料,而数据结构则是组织这些原材料的智慧。我们将探讨列表、栈、队列、树等基本数据结构的核心概念,以及它们如何影响程序的性能和设计。理解这些结构,将帮助你更有效地存储和操作信息,为编写高效代码打下坚实基础。 逻辑的严谨: 布尔逻辑、条件判断、循环控制……这些是编程的骨架。我们将以清晰易懂的方式,阐述这些逻辑概念如何驱动程序的执行,以及如何避免逻辑错误。我们会用一些趣味性的场景来模拟程序的决策过程,让你直观感受逻辑的魅力。 模块化的思维: 将庞大的系统分解成更小、更易于管理的模块,是应对复杂性的关键。我们将探讨模块化的好处,以及如何进行合理的划分,为团队协作和代码复用奠定概念基础。 第二篇:表达的艺术——语言的灵魂与语法 编程语言是人类与计算机沟通的桥梁。在这部分,我们将聚焦于如何让这种沟通变得清晰、准确、富有表现力,而不是简单罗列语法规则。 变量的生命: 理解变量不仅仅是内存中的一个地址,更是承载数据和状态的实体。我们将深入探讨变量的声明、作用域、生命周期,以及不同数据类型(整数、浮点数、字符串、布尔值等)的特性和它们在内存中的表示。 指令的序列: 程序就是一系列指令的集合。我们将详细讲解顺序执行、选择执行(if/else)、重复执行(循环)的各种形式,以及如何通过这些基本控制结构构建复杂的程序逻辑。 函数的魔力: 函数是代码的“乐高积木”,可以将重复的任务封装起来,提高代码的复用性和可读性。我们将探讨函数的定义、参数传递(值传递与引用传递的差异)、返回值,以及递归的优雅。 对象的本质: 面向对象编程是现代软件开发的核心范式之一。我们将从“万物皆对象”的理念出发,讲解类、对象、属性、方法、封装、继承、多态等核心概念,让你理解如何通过对象化的方式来建模和解决问题。 异常的处理: 错误是不可避免的,但如何优雅地处理它们,却体现了代码的健壮性。我们将探讨异常的概念,以及如何使用 `try-catch` 等机制来捕获和处理运行时错误,确保程序的稳定运行。 库与框架的智慧: 站在巨人的肩膀上,可以看得更远。我们将介绍如何利用现有的库和框架来加速开发,以及如何理解它们的设计思想,而不是简单地调用 API。 第三篇:构建的实践——从构思到实现的流程 有了思维的基石和表达的工具,我们还需要将它们转化为实际可运行的程序。这一篇将关注从构思到实现的完整流程。 需求分析的火眼金睛: 在写代码之前,清晰地理解需求是成功的关键。我们将探讨如何提炼用户需求,将其转化为清晰的程序功能描述,并识别潜在的模糊之处。 设计的美学: 好的设计让代码易于理解、修改和扩展。我们将介绍几种常见的软件设计模式(如工厂模式、单例模式等)的原理和适用场景,帮助你写出更具“设计感”的代码。 代码的雕琢: 编写清晰、简洁、有意义的代码是程序员的基本功。我们将分享编写可读性高、易于维护的代码的技巧,包括命名规范、代码注释、代码风格等。 测试的守护神: 软件的质量离不开测试。我们将介绍单元测试、集成测试等基本测试理念,以及如何编写有效的测试用例来验证代码的正确性。 调试的耐心: 遇到bug是常有的事,学会高效的调试技巧可以事半功倍。我们将分享一些通用的调试思路和方法,帮助你快速定位和解决问题。 版本迭代的智慧: 软件开发不是一蹴而就的。我们将探讨如何规划和管理软件的迭代过程,以及如何根据反馈不断优化和改进产品。 第四篇:开放的世界——协作与共享的理念 编程的魅力不仅在于个人创造,更在于社区的协作和知识的共享。虽然本书不直接涉及 GitHub 的具体操作,但我们将深入探讨与之相关的核心理念。 协作的艺术: 软件开发往往是团队的结晶。我们将探讨如何在团队中进行有效的沟通、代码审查和知识共享,以及如何构建一个健康的协作氛围。 共享的价值: 开源软件的力量在于其开放性和社区驱动。我们将深入理解开源的意义,以及如何贡献和利用开源项目,共同推动技术的进步。 知识的传承: 学习是程序员终生的课题。我们将探讨如何有效地学习新的技术,如何阅读他人的代码,以及如何将自己的经验分享给他人。 代码的“朋友圈”: 理解社区的力量,以及如何通过参与社区活动来提升自己的视野和技能。 本书特色: 重概念,轻工具: 核心在于理解编程的本质,而不是拘泥于特定工具的使用。 循序渐进,深入浅出: 从最基础的思维方式讲起,逐步深入到高级的概念,用最生动形象的语言解释复杂的理论。 实践导向,案例丰富: 结合大量的类比、伪代码和概念性示例,让你在理解理论的同时,也能看到落地的可能性。 培养思维,提升能力: 最终目标是让你具备独立思考、解决问题的能力,成为一名真正的“代码炼金术士”。 无论你是初次接触编程,还是希望深化对编程的理解,亦或是渴望构建出属于自己的数字世界,《代码的炼金术:从零构建你的数字王国》都将是你不可或缺的向导。让我们一起,用代码点亮你的数字梦想!