新書推薦:
《
一个经济杀手的自白 第3版
》
售價:NT$
505.0
《
8秒按压告别疼痛
》
售價:NT$
398.0
《
津巴多时间心理学:挣脱束缚、改写命运的6种时间观
》
售價:NT$
352.0
《
大英博物馆东南亚简史
》
售價:NT$
806.0
《
纯粹·我只要少许
》
售價:NT$
367.0
《
投机苦旅:一位投机客的凤凰涅槃
》
售價:NT$
403.0
《
重返马赛渔场:社会规范与私人治理的局限
》
售價:NT$
316.0
《
日子慢慢向前,事事慢慢如愿
》
售價:NT$
254.0
編輯推薦:
针对项目开发人员:以*有效率的方式,引导你在实践中完整地学习Git的操作技巧和应用。针对项目管理者:在实例中学习如何查看项目开发的各种统计图,以便随时掌握项目开发的状况。针对MIS人员:提供建立Git Server的多种方法,自行选用和规划*适合自己实际运用的方法。
內容簡介:
本书以教科书的方式,循序渐进地向软件开发人员或软件开发的项目管理人员,讲述如何快速掌握分布式版本控制系统 Git 的应用方法,让繁琐复杂的项目开发的版本控制变得高效且轻松自如。书中细致入微地介绍了如何使用设置文件和操作Git文档库,以及建立项目开发的分支、合并分支和解决冲突的操作;在具备扎实的基础之后,介绍了Git GUI程序用法,以及 Git 在团队开发模式中应用的问题;讲述如何与全球的项目开发人员进行交流,提升程序开发的经验和能力;介绍了GitHub、Bitbucket、GitLab等提供Git服务的网站;本书最后的重点为介绍架设Git Server的几种方法,让每一个项目开发团队,可以按照自己的软硬件环境,选择适合的方式来控管项目开发。
本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
關於作者:
孙宏明台湾成功大学信息工程研究所博士台湾友立信息公司主任研究员台湾开南大学资管系副教授台北城市科技大学、台湾元培科技大学、台湾侨光科技大学等大专院校Android App开发研习课程讲师。
目錄 :
目 录
第一部分 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课 使用HTTPHTTPS访问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
內容試閱 :
第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 publicprivate rsa key pair.
Enter file in which to save the key cUsers用户账号.sshid_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。