
6.3 版本管理:git和GitHub
2005年Linux内核代码版本控制软件BitBucket失效时,Linux创始人Linus花了一周的时间开发出git这个分布式的版本控制系统,它最初被用于Linux内核代码的版本管理,目前已经成为主流版本管理程序了,多数开源项目都使用git,git的Logo如图6-10所示。

图6-10 git的Logo(图片来源:官方网站)
git是一个分布式设计的版本控制程序,凭借其便捷和高效的操作获得了广大开发者的认可,并在互联网上迅速传播,几乎成为开源社区版本控制的标配程序了,之后又诞生了基于git的GitHub在线代码托管服务,它的出现可以说为git打了一针强心剂,可以视为一个WebGUI的git,并提供基于git的版本托管服务,GitHub的Logo如图6-11所示。

图6-11 GitHub的Logo(图片来源:官方网站)
不用命令行也可以使用git,它基于Ruby on Rails开发,由于程序源代码是开发者沟通最直接的手段,所以,开源项目通过GitHub来快速传播与分享,开发者则可以直接浏览和追踪其他开发者、组织开源项目的源代码,并可利用Fork功能快速创建基于现成开源项目的分支,直接参与到开源项目中,大大降低了参与开源软件的门槛,GitHub的Web界面如图6-12所示。

图6-12 GitHub的Web界面
综上所述,称git和GitHub为开源软件世界的基石一点儿也不为过,下面就通过一个十分简单的实例,介绍git和GitHub的使用,切实帮助开发者、开发团队以及企业提高软件开发的效率和质量。
6.3.1 安装和配置git
Ubuntu 18.04默认没有安装git,故需要安装和配置git,经过简单的安装和配置,就可以使用git来管理自己的代码了。
1)安装git
可以运行如下命令安装git:

成功安装后,可以键入如下命令检测安装:

2)配置使git更高效便捷
安装好后就可以使用了,运行如下命令查看git的默认配置:

由于还没有任何配置,所以显示为空。
为了使用git更加顺手和高效,需要为git的常用命令设置一些别名,便于日后操作:

添加用户电子邮件和用户名称,具体操作如下:

3)指定默认编辑器为Vim
多数开发者都有自己熟悉的编辑器,将自己最熟悉的编辑器设置为git默认的编辑器会比较方便,具体方法如下:

启用git输出显示颜色:

全部设置完成后,再次运行git config-l命令,就可以看到上述配置了:

6.3.2 关联git和GitHub账号
配置好git之后,需要将git和GitHub的账号关联起来,这样就可以通过git操作GitHub远程服务器上的版本库了,并可即时将本地代码库中的源代码推送到GitHub保存。要实现这个功能,首先需要申请一个GitHub账户,并且配置相关的SSH key,随后在GitHub上创建一个版本库,笔者已经在GitHub上使用自己的账户创建了一个名为C的版本库。
通过自己的GitHub账号创建好一个名为C的版本库,地址:git@github.com:HenryHo/c.git。
使用如下命令创建SSH Key:

成功创建后切换到~/.ssh目录下,复制id_rsa.pub文件内容到GitHub Settings左侧的SSH and GPG keys-SSH keys配置页面,具体操作如图6-13所示。

图6-13 保存SSH key到GitHub
确认无误后保存,即可使用如下命令测试与GitHub服务器的连通性:

首先输入yes,如果获得如下提示:

说明连接没有任何问题,已准备就绪。
6.3.3 使用git将代码推送到GitHub
首先在本地创建或编辑源代码,然后添加、提交到本地代码库,之后再推送到GitHub,具体操作如下。
从远端复制和检测代码:

在本地创建源代码,示例如下:

代码如下:

完成后保存退出即可。
创建源代码文件后,首先要添加和提交到本地代码库中,具体操作如下:

运行如下命令将本地库中源代码推送到GitHub远端仓库:

Tips: 避免频繁地输入用户名和地址。
如果在git clone时使用的是https安全地址,在进行git push等操作时,总会提示输入GitHub账号和密码,可以运行如下命令将认证信息保存起来:

这样只需要输入一次,后续提交或拉取就不用再输入用户名和密码了。
这时,通过浏览器打开GitHub,登录后进入C库,即可看到刚添加的源代码文件。当然这个例子极为简单,实际工作中的操作要复杂得多,这就需要大家多使用多积累。