描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302437796
本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
目 录
部分 Git的基本概念和操作
第1课 Git、谁与争锋 2
1-1 安装和使用Git 3
1-2 了解Git的工作方式 9
第2课 Git配置文件的妙用 11
2-1 “git config”指令的用法 12
2-2 修改默认的文本编辑器和文件对比程序 15
第3课 把文件存入Git文档库 20
3-1 排除不需要加入文档库的文件 20
3-2 控制Commit 25
3-3 查看Commit节点 27
第4课 比较文件的差异和从Git 文档库取回文件 31
4-1 从Git文档库中取出文件 33
4-2 使用“git mv”指令改变文件或是文件夹的名称 36
4-3 暂存当前文件夹的文件状态
37
4-4 清理Git文档库 38
第5课 Git程序项目管理的实践演练 40
第6课 获取Git文档库统计数据和绘制统计图表 45
6-1 获取Git文档库的统计数据 46
6-2 使用GitStats绘制统计图表 49
第二部分 建立分支、合并和解决冲突
第7课 程序项目的分支(Branch) 56
7-1 解决Detached
HEAD的问题 63
第8课 合并程序项目的分支和解决冲突 67
8-1 解决合并分支时发生的冲突
71
8-2 设置Merge Tool解决合并分支时发生的冲突 75
8-3 使用Cherry-Pick指令运用指定的Commit节点版本 77
8-4 处理Detached
HEAD状态和Revert Commit节点 79
第9课 使用Rebase指令更新分支的起始点 81
9-1 Rebase指令的用法
84
9-2 执行Rebase之后想要反悔怎么办? 86
第10课 程序项目的分支和合并的实践演练 88
10-1 程序项目开发导入Git的策略 88
10-2 结合Git与程序项目开发 91
第三部分 Git程序的图形操作介面
第11课 Git GUI程序的基本功能 99
11-1 Git GUI程序的基本操作 101
11-2 Git GUI程序和其他程序搭配使用 104
第12课 使用Git GUI程序创建分支和合并 108
第13课 SmartGit程序操作介绍 114
13-1 SmartGit程序的基本操作 116
13-2 SmartGit程序的分支、Rebase和合并 120
第14课 SourceTree程序操作介绍 127
14-1 SourceTree程序的基本操作 128
14-2 SourceTree程序的分支、Rebase和合并 131
第15课 TortoiseGit程序操作介绍 138
15-1 TortoiseGit程序的基本操作 139
15-2 TortoiseGit程序的分支、Rebase和合并 145
第四部分 远程Git文档库和团队开关模式
第16课 “远程Git文档库”的基础操作 154
16-1 “远程Git文档库”的功能 155
16-2 创建“远程Git文档库” 156
16-3 从“远程Git文档库”复制出“本地Git文档库” 158
16-4 “本地Git文档库”和“远程Git文档库”的数据
同步 159
第17课 “远程Git文档库”的高级操作 167
第18课 GitHub让程序项目飞上云端 172
18-1 注册和设置GitHub
173
18-2 使用GitHub的“远程Git文档库” 177
18-3 安装和使用GitHub
for Windows 182
第19课 Fork让Git文档库分家后再合并 189
19-1 Fork和Rebase
Git文档库 192
19-2 创建Pull
Request报告我们的更新 195
第20课 Bitbucket比GitHub更好用 199
20-1 注册和设置Bitbucket
200
20-2 使用Bitbucket的“远程Git文档库” 203
20-3 使用SourceTree程序操作“远程Git文档库” 205
20-4 执行Fork和Pull Request 208
第21课 GitLab完全免费再加送整个系统 211
21-1 自己架设GitLab网站 219
第五部分 架设Git Server
第22课 使用Windows共享文件夹或是Git Daemon
作为Git Server 225
22-1 把Windows“共享文件夹”作为“远程Git
文档库” 226
22-2 使用Git
Daemon创建Git Server 227
第23课 使用HTTP/HTTPS访问Git Server 231
23-1 使用HTTP访问Git Server 232
23-2 使用HTTPS访问Git Server 236
第24课 使用SSH认证和加密的Git Server 239
24-1 SSH的工作原理
240
24-2 安装和设置Copssh
Server 241
附录 Git常用指令一览表 249
序
在现今的信息产业中,软件扮演的角色越来越重要。如果公司想要在信息产业界中占有一席之地,拥有强大的软件研发实力是必要的条件。以现阶段软件产业的生态来说,能够熟练使用工具软件来提升软件研发的效率,是影响软件实力的关键因素之一,而Git就是能够有效提升软件研发效率的重要工具。
Git青出于蓝、更胜于蓝
Git初是由Linux kernel的作者Torvalds先生所开发,用来管理 Linux kernel项目的工具。它的功能是负责项目的版本控制,我们称它为“版本控制系统”(Version Control System, VCS)。虽然在Git之前,已经有许多VCS。但是相比之下,Git有更多的优点。因此从Git出现之后,就以“后来者居上”的态势快速普及。不仅有许多软件研发公司改用Git来管理和控制软件项目,网络上也出现了许多提供Git文档库存储服务的网站。而且绝大多数的开放源码的程序项目,也都是使用Git来进行版本控制的管理。为了顺应这样的趋势,软件开发工具现在也都支持用Git来进行版本控制。因此,只要是从事软件项目研发相关的工作,或是未来即将踏入这个领域,学会使用Git已经成为从业人员的技能。
Git和其他VCS有许多不一样的地方。它的优点是能够提升软件开发团队的工作效率,但是相对而言,就需要多一点时间来学习更好地使用它。初次使用Git的人通常会有似懂非懂的感觉,仿照别人的操作虽然很容易,可是究竟这样操作会得到什么结果,或是在不同的情况下该如何处理,这一切都会觉得懵懵懂懂。如果是和软件研发团队一起工作,每一次操作Git更是胆颤心惊,害怕一不小心,毁了整个团队的心血结晶,成为大家的罪人!
其实Git的核心是保护我们的文件,因此它工作的指导原则,就是不会遗失我们的数据,除非我们执行删除文件的指令。因此,Git的安全性是无庸置疑的,只要了解它的运行方式,熟悉各种情况下的操作方法,就能够让它发挥的效能。
Git的学习之道
本书以循序渐进的方式,学习Git的功能和用法。书中以实际的操作范例,让读者亲身体验Git工作的细节,并且掌握每一个指令的效果以及每一个选项的使用时机。虽然网络上有许多采用GUI(图形用户界面)的Git程序,但是笔者不建议初学者一开始就使用这类型的程序。因为它的操作界面过于复杂,初学者在还没有完全了解的情况下,常常会觉得疑惑,反而容易让学习失去重点。相比之下,输入Git指令的操作方式虽然比较麻烦一点,但是却比较清楚,初学者可以完全理解每一个操作和选项所达成的结果。等到建立好Git指令操作的基础之后,再来使用GUI界面的Git程序,就会水到渠成,轻而易举。
本书的内容安排先从Git的单机操作开始,让读者先了解Git如何工作,并且熟悉配置文件和文件库的基本操作方法。接着学习如何建立分支、合并分支和解决冲突。等到基础完备之后,再来介绍GUI操作界面的Git程序,让读者体验不同的操作风格。接着学习Git在团队开发模式的应用,以及介绍网络上提供Git文件库存储服务的网站。让读者了解如何使用这些资源,辅助程序项目的开发。使用这些网站的另一个好处是可以藉此参与开放源码的程序项目,提升自己程序开发的经验和能力。本书的后部分是介绍架设Git Server的几种方法,让每一个项目开发团队,可以按照自己的软硬件环境,选择适合的方式来管理和控制项目。
相信通过本书精心编排的学习单元,能够顺利地引导初学者,一步一步地建立完整的操作观念和技巧,并且培养在不同情况下的应用能力。一旦读者能够完全掌握Git之后,它必定成为你或是你的团队开发程序项目的助手!
孙宏明
第18章 GitHub让程序项目飞上云端
在因特网上,有一些网站专门提供存储Git文档库的服务。当前知名的包括GitHub、Bitbucket和GitLab,其中又以GitHub拥有多的用户,但是它提供的“优惠”却比较少。没有付费的用户,只能够创建公开的Git文档库。也就是说,全世界的人都可以自由下载他的程序项目。Bitbucket和GitLab的免费用户可以创建私有的Git文档库,因此对于想要保护知识产权的用户来说,有比较好的保障。这些网站的功能和操作流程都很类似。这个单元我们先从GitHub开始介绍。
18-1 注册和设置GitHub
要使用GitHub提供的服务,必须先到GitHub网站完成注册。开启网页浏览器,用百度或者Google搜索GitHub,就可以找到它的官方网站。进入GitHub官方网站会看到如图18-1所示的画面。如果已经注册过,可以单击屏幕画面右上方的Sign in按钮,切换到登录画面。如果是次使用,直接在屏幕画面右边的三个空白字段输入用户名称、email账号和密码,再单击Sign up for GitHub,就会切换到如图18-2所示的屏幕显示画面。中间有一个表格让我们挑选使用模式。下面是Free模式,我们不需要付费,但是所创建的Git文档库是公开的,全世界的人都可以下载。挑选好使用模式之后,单击下面的Finish
sign up,就会进入如图18-3所示的用户操作首页。
图18-1 GitHub网站首页
图18-2 选择使用模式
图18-3 GitHub的用户操作首页
GitHub网站上的Git文档库是扮演“远程Git文档库”的角色。计算机上的“本地Git文档库”可以通过两种方式存取GitHub网站上的“远程Git文档库”。种是使用HTTPS通信协议,另一种则是使用SSH通信协议。它们的优点如下:
1. HTTPS和SSH通信协议在传送数据的过程中都会进行加密,因此是很安全的数据传输方式。
2. 如果使用HTTPS把数据上传到GitHub网站上的“远程Git文档库”,Git程序会要求输入GitHub网站的账号和密码。
3. 如果使用SSH,我们必须按照后续的说明,在计算机上创建一对“密钥”,然后把其中的“公钥”,加入GitHub网站的账号中。当“本地Git文档库”的数据,要通过SSH上传到GitHub时,GitHub网站会先检查我们的计算机有没有登录“公钥”。如果没有,就会拒绝。如果有,就会提示输入“公钥”所设置的密码。如果密码正确,才会执行上传数据的操作。也就是说,SSH通信协议提供“限定计算机”和“验证密码”这两道保护。但是,我们也可以不对“密钥”设置密码,这样只要在特定的计算机上执行,就可以直接传送数据,而不用输入密码,操作上更方便。
4. 我们可以随时切换使用HTTPS或是SSH通信协议,操作上有很大的弹性。
接下来我们介绍如何在计算机上创建“密钥”,并且把对应的“公钥”登录到GitHub网站的账号:
在计算机上执行Git Bash程序,输入以下指令:
ssh-keygen
程序会询问存储“密钥”文件的路径,直接按Enter键,接受预订的路径即可,然后输入两次密码或是直接按Enter键。这个密码就是后续要将“本地Git文档库”的数据传送给GitHub网站时,需要输入的密码。如果直接按Enter键,后续操作就不需要验证密码。
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/(用户账号)/.ssh/id_rsa): ß直接按Enter
Enter passphrase (empty for no passphrase):
ß 输入密码,或是直接按Enter键
Enter same passphrase again: ß 再次输入密码,或是直接按Enter键
使用文件资源管理器查看“c:用户(用户账号).ssh”文件夹,会在里面找到两个文件:id_rsa文件是“私钥”;id_rsa.pub文件是“公钥”。用文字编辑程序打开“公钥”文件,复制全部内容。
开启网页浏览器,登录GitHub网站。然后在如图18-3所示的右上角,单击Settings按钮(小齿轮图标)。
浏览器会显示如图18-4所示的屏幕画面,先单击左边选项的SSH
keys,再选择右上角的Add SSH key。在Title字段输入自定义的名称,然后在Key字段贴上步骤2复制的“公钥”文件内容。后单击Add key按钮。屏幕画面上会新增一个key选项。
我们可以按照同样的方式,加入其他计算机的SSH“公钥”。提醒读者,同一台计算机上,不同用户账号的SSH“密钥”是独立的。也就是说,账号A创建的“密钥”不能让账号B使用。
图18-4 登录SSH“公钥”的操作界面
18-2 使用GitHub的“远程Git文档库”
其实GitHub的“远程Git文档库”的用法,和第16单元以及第17单元介绍的操作方式几乎一模一样。我们学过的指令都可以使用,操作逻辑也完全相同。以下是GitHub网站提供的功能:
1. 我们可以随意创建新的Git文档库,以及删除已经存在的Git文档库。
2. GitHub网站提供了一个独立执行的程序,可以进行简单的Git操作以及文档库同步的功能。
3. GitHub网站提供图表统计功能,帮助我们了解Git文档库更新的情况。
接下来我们按照第16单元和第17单元讨论的两种使用情况来介绍GitHub的用法。种情况是先在GitHub网站创建一个Git文档库,再将它复制到自己的计算机,成为“本地Git文档库”,然后开始着手开发程序项目。完整的操作步骤如下:
开启网页浏览器,登录GitHub网站。然后在图18-3右下方,单击New repository按钮。
浏览器会显示出如图18-5所示的屏幕画面。在Repository
name字段输入文档库名称(也就是文件夹名称),然后单击Create repository按钮。
图18-5 创建Git文档库
浏览器会显示出如图18-6所示的屏幕画面。这个屏幕画面提示我们如何使用Git指令,将计算机上的“本地Git文档库”上传到GitHub。我们可以单击上面、在个框选择区域中的HTTPS或是SSH按钮。屏幕画面中的Git指令会随着变动。这里的指令范例是告诉我们,如何使用HTTPS或是SSH来传送数据。这些指令我们已经在第16单元和第17单元介绍过,读者应该能够了解它们的功能(提示:可以参考本书附录的Git指令和使用说明)。我们可以单击在个框选区域右边的复制按钮,把文档库的网址复制下来。
图18-6 创建Git文档库之后的操作提示画面
单击网页画面左上角的小图标回到操作首页。网页右下方会显示刚刚创建的Git文档库。
接下来我们要从GitHub网站复制Git文档库到自己的计算机中,成为“本地Git文档库”。启动Git Bash程序,切换到程序项目的文件夹,输入以下指令(提示:要在Git Bash程序中粘贴文字时,先单击程序屏幕画面左上角的图标,再选择“编辑 >
粘贴”)。从GitHub网站复制Git文档库时不需要输入密码,因为我们的程序项目是完全公开的,所有人都可以下载。
git clone (粘贴步骤3复制的文档库的网址) 程序项目文件夹名称
复制完成后,切换Git Bash程序的工作目录,进入程序项目的文件夹,然后执行“git remote –v”指令,就会看到remote相关的设置。如果前一个步骤是以HTTPS的方式复制文档库,remote就会设置成HTTPS模式。如果前一个步骤是以SSH的方式复制文档库,remote就会设置成SSH模式。我们可以随时修改模式,只要使用上一个单元介绍的“git remote
set-url”指令即可:
git remote set-url origin HTTPS或是SSH模式的url
现在可以开始在这个程序项目的文件夹中创建程序项目,再使用前面学过的Git指令执行commit、或是创建分支、执行合并等操作。如果要把“本地Git文档库”的更新送到GitHub网站存储,只要按照第16单元介绍的方法操作即可。
如果创建程序项目之后,想要改变程序项目文件夹的名称也可以,只要先结束Git程序(否则程序项目的文件夹会被锁定),再更改文件夹名称即可,Git文档库的操作不会发生任何问题。
如果要删除GitHub网站上的文档库,可以从如图18-3所示的操作首页右下方单击文档库名称,就会显示出如图18-7所示的画面。单击右边的Settings选项,然后在下一个操作界面下方,单击Delete this repository。网页会显示一个对话框,要求输入文档库名称。输入完毕后,单击下方的按钮,就可以删除文档库。
如果想要查看Git文档库的统计资料,可以从图18-7右边的选项中选择Graphs,就会出现如图18-8所示的图表。屏幕画面上方可以切换不同的统计数据。
图18-7 GitHub网站上的文档库内容
图18-8 GitHub网站的文档库使用统计图
接下来介绍第二种使用情况,就是先在计算机上创建“本地Git文档库”,再将它送到GitHub网站上的文档库存储,以下是完整的操作步骤:
如同前面的做法,先登录GitHub网站,单击New
repository按钮,然后在Repository name字段输入文档库名称,后单击Create repository按钮。
GitHub网站画面会提示我们,如何将计算机上的“本地Git文档库”上传到GitHub,如图18-6所示。我们先选择好个框选区域中的HTTPS或是SSH(也就是选定传送数据的方式,后续可以再使用“git remote set-url”指令修改)。然后复制下面框选区域中的指令。接着启动Git Bash程序,切换到程序项目的文件夹,执行刚刚复制的指令。就可以把程序项目文件夹中的“本地Git文档库”传送到GitHub网站,并且设置好两个文档库之间的对应关系。
GitHub网站提供一个GitHub for Windows程序。我们可以使用这个程序在计算机中创建Git文档库,或是从GitHub网站复制文档库。也可以执行commit、创建分支和合并分支等操作。现在我们就来介绍它的用法。
18-3 安装和使用GitHub
for Windows
步是到GitHub网站下载安装文件。在GitHub网站首页下方有一个Download GitHub for Windows按钮,单击它就可以下载安装文件。下载完成后,执行安装程序。安装之后计算机中会增加3个程序:
1. GitHub
这个程序就是我们要介绍的主角。
2. Git Bash
安装程序会自动安装一套Git Bash程序。
3. Git PowerShell
这是DOS指令版本的Git程序,我们可以在这个程序执行DOS指令以及所有的Git指令。在GitHub
for Windows程序的配置文件中,可以指定使用Git Bash或是Git PowerShell来执行Git指令。
安装之后,次执行GitHub程序,会显示出如图18-9所示的屏幕画面。我们必须填入GitHub网站的账号和密码,然后单击Log in按钮,就会切换到如图18-10所示的屏幕画面。这个屏幕画面用来设置commit时带入的用户名称和电子邮件账号。输入完毕后,单击Continue按钮,就会显示出如图18-11所示的屏幕画面。GitHub程序会尝试寻找计算机上的“本地Git文档库”,如果找到了,就会显示在如图18-11所示的屏幕画面中。单击dashboard,就会进入如图18-12所示的屏幕画面。
图18-9 次启动GitHub程序的屏幕画面
图18-10 设置commit时带入的用户名称和电子邮件账号
图18-11 GitHub程序尝试寻找计算机上的“本地Git文档库”
图18-12 没有加入任何Git文档库的GitHub程序之屏幕显示画面
在开始操作以前,先来介绍一下GitHub程序的设置。单击图18-12右上角的“小齿轮”图标,然后选择Options,就会出现如图18-13所示的画面。左上方的Accounts字段就是前面输入的GitHub网站账号。左下方的Configure git字段就是前面输入的commit用户名称和电子邮件账号。右上方的Clone path是从GitHub网站复制文档库时默认的存储路径。右下方的Default shell是指定使用Git Bash或是Git PowerShell来执行Git指令。设置完毕后,单击左下角的Save按钮即可。
图18-13 GitHub程序的设置项
现在我们要加入一个Git文档库。单击GitHub程序左上角的“ ”按钮,就会显示出如图18-14所示的屏幕画面。屏幕画面的上方有Add、Create和Clone 3个选项。Add用来加入一个计算机中已经存在的Git文档库,Create用来创建一个新的Git文档库,Clone是从GitHub网站复制得到一个“本地Git文档库”。我们选择Clone,GitHub会自动登录GitHub网站,获取所有的“远程Git文档库。单击要复制的Git文档库,然后单击下方的Clone按钮,再选择存储路径,就会开始复制文档库。复制完成后,会显示如图18-15所示的屏幕画面。
图18-14 使用GitHub程序从GitHub网站复制Git文档库
图18-15 GitHub程序管理Git文档库的屏幕画面
现在我们可以开始修改这个复制得到的程序项目,所有被修改的文件,都会显示在如图18-15所示的框选的区域内。接下来的操作方式如下:
1. 如果要执行commit,先在下方的Summary字段输入操作说明,再单击下面的Commit按钮。
2. 如果要新增分支,可以单击如图18-15所示的框选区域左上角的分支图标,然后输入新分支的名称,再单击Create按钮。创建新分支之后,会自动切换到这个新分支。
3. 分支图标右边显示的是当前正在操作中的分支名称。如果要切换分支,可以单击该分支名称,再从显示的分支列表中选择某一个分支,就会进行切换。
4. 如果要合并分支,先单击分支图标右边的分支名称,再单击右上角的Manage,就会出现如图18-16所示的屏幕显示画面。假设我们要把develop分支合并到master分支。先用鼠标把如图18-16所示的屏幕画面中的develop分支,拖曳到下方左边的drag branch here区域。然后再把master分支拖曳到下方第二个drag branch here区域。后单击右边的Merge按钮。
图18-16 合并分支的操作界面
5. 如果当前操作中的分支有对应到GitHub网站上的Git文档库,GitHub程序右上角则会显示Sync按钮。单击该按钮,就会把“本地Git文档库”的更新传送到GitHub网站上的Git文档库。如果当前操作中的分支还没有传送给GitHub网站上的Git文档库,GitHub程序右上角则会显示Publish按钮。单击该按钮,就会把这个分支的数据传送到GitHub网站上的Git文档库。
6. 如果要删除分支,可以单击如图18-16所示的屏幕画面上的垃圾桶图标。但是要注意,删除分支会同时把“本地Git文档库”和GitHub网站上的Git文档库中的分支删除。
7. 如果想要执行Git指令,可以在如图18-15所示的屏幕画面右上角,单击“小齿轮”图标,然后选择Open in Git Shell,就会启动Git Bash或是Git PowerShell程序。
了解了GitHub网站和程序的操作方法之后,下一个单元我们要介绍一种复制Git文档库的特殊方式,那就是Fork。
评论
还没有评论。