![完美应用Ubuntu(第4版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/515/37423515/b_37423515.jpg)
6.3 版本管理:git和GitHub
2005年Linux内核代码版本控制软件BitBucket失效时,Linux创始人Linus花了一周的时间开发出git这个分布式的版本控制系统,它最初被用于Linux内核代码的版本管理,目前已经成为主流版本管理程序了,多数开源项目都使用git,git的Logo如图6-10所示。
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-104-3.jpg?sign=1739276417-2hWk5WnPtQykdocfflAutLEcIjlCVn4E-0-e4a046d3039a2b35836fdf69ac62a357)
图6-10 git的Logo(图片来源:官方网站)
git是一个分布式设计的版本控制程序,凭借其便捷和高效的操作获得了广大开发者的认可,并在互联网上迅速传播,几乎成为开源社区版本控制的标配程序了,之后又诞生了基于git的GitHub在线代码托管服务,它的出现可以说为git打了一针强心剂,可以视为一个WebGUI的git,并提供基于git的版本托管服务,GitHub的Logo如图6-11所示。
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-104-4.jpg?sign=1739276417-35WdAF4EK17HWzMSaqRvruBMjO4DhKm2-0-467c2af7cca1749ea0a28d7093060266)
图6-11 GitHub的Logo(图片来源:官方网站)
不用命令行也可以使用git,它基于Ruby on Rails开发,由于程序源代码是开发者沟通最直接的手段,所以,开源项目通过GitHub来快速传播与分享,开发者则可以直接浏览和追踪其他开发者、组织开源项目的源代码,并可利用Fork功能快速创建基于现成开源项目的分支,直接参与到开源项目中,大大降低了参与开源软件的门槛,GitHub的Web界面如图6-12所示。
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-1.jpg?sign=1739276417-LSOlxngK3BYGHjvl9u0BNBlsWWB9MNnY-0-7587eef4b17521669e34ea89dac86a8b)
图6-12 GitHub的Web界面
综上所述,称git和GitHub为开源软件世界的基石一点儿也不为过,下面就通过一个十分简单的实例,介绍git和GitHub的使用,切实帮助开发者、开发团队以及企业提高软件开发的效率和质量。
6.3.1 安装和配置git
Ubuntu 18.04默认没有安装git,故需要安装和配置git,经过简单的安装和配置,就可以使用git来管理自己的代码了。
1)安装git
可以运行如下命令安装git:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-2.jpg?sign=1739276417-an7skR9meGcs0k2BjFuQIbXQi2dDWt1W-0-e600493833656c9f7db8c5f2dda7aaeb)
成功安装后,可以键入如下命令检测安装:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-3.jpg?sign=1739276417-pGswKVGXr44KQaJRTXYHUCRZ7jeUH3lM-0-7e09b7e3199acaca8539afbef9bf2532)
2)配置使git更高效便捷
安装好后就可以使用了,运行如下命令查看git的默认配置:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-4.jpg?sign=1739276417-potKni27t4MHEUSmFXxwwBuIly0BIskz-0-c61ad196c1e0b2d109e6b71668f69f51)
由于还没有任何配置,所以显示为空。
为了使用git更加顺手和高效,需要为git的常用命令设置一些别名,便于日后操作:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-5.jpg?sign=1739276417-6b33nst1gMkkpNWolXVoG6JBVdD3MxUl-0-24f64d1433cee02c6e481ff350d409eb)
添加用户电子邮件和用户名称,具体操作如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-1.jpg?sign=1739276417-4bwtb6q6pNpqlV7kpMvWC4YlsPkj7fwN-0-72716459b69812fa7ce0c93ff76fbfb4)
3)指定默认编辑器为Vim
多数开发者都有自己熟悉的编辑器,将自己最熟悉的编辑器设置为git默认的编辑器会比较方便,具体方法如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-2.jpg?sign=1739276417-GE3EF0PnZYyfJ9B2m3K8eXIqwmNhB4ll-0-33fef94213e068ff92923c97faa286e3)
启用git输出显示颜色:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-3.jpg?sign=1739276417-4WPK8luoesU07RXa9Ac8dWYCENFBESiw-0-56e55a6dd47130722022882b2dcbea07)
全部设置完成后,再次运行git config-l命令,就可以看到上述配置了:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-4.jpg?sign=1739276417-w1hpWaUrdieB3rZVtcg7H6YgKFdTabQZ-0-83e4cc644d48e1832341121abc99cb0f)
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:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-5.jpg?sign=1739276417-YjZMDwOM88PJ6erPdFiogF6205WublWK-0-e857cfad14d1d7971a46c7d657f7477c)
成功创建后切换到~/.ssh目录下,复制id_rsa.pub文件内容到GitHub Settings左侧的SSH and GPG keys-SSH keys配置页面,具体操作如图6-13所示。
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-1.jpg?sign=1739276417-0bJ2wPaYpPelHOlGo0T2V5RGl7pHKdSW-0-8a26d36ff3c70d4a8bcf7a194537109c)
图6-13 保存SSH key到GitHub
确认无误后保存,即可使用如下命令测试与GitHub服务器的连通性:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-2.jpg?sign=1739276417-MNpOVu0W1YURgkA4faVrEzX01D9UGoBI-0-ad1f6c05c99a93c0535d51a1295bc8f6)
首先输入yes,如果获得如下提示:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-3.jpg?sign=1739276417-mNrCA1B45wWRr8DlWpz49K2aYU7bfSnD-0-6fef66055cdd502dba4ba9b1278bb95a)
说明连接没有任何问题,已准备就绪。
6.3.3 使用git将代码推送到GitHub
首先在本地创建或编辑源代码,然后添加、提交到本地代码库,之后再推送到GitHub,具体操作如下。
从远端复制和检测代码:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-4.jpg?sign=1739276417-lTpnAA3ZFU2JRKs32ALXsWkvLl4LMsRe-0-2aa5dfe98b86c1275cd9abab208dc826)
在本地创建源代码,示例如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-5.jpg?sign=1739276417-Syt3rsMoE4cBMCwtGtMxmGX1z2GjKWLZ-0-f660ce7dc6bd38a4c36972bec8b6ed88)
代码如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-6.jpg?sign=1739276417-9biGLYXfBteKx2HMzoim92BSFcWOdWSl-0-c93aff40752b470650aa85c970b13fd5)
完成后保存退出即可。
创建源代码文件后,首先要添加和提交到本地代码库中,具体操作如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-108-1.jpg?sign=1739276417-A26ECtlaXUFnRlVpIF9NXcO3KySvLrst-0-f4ec8e77b72007d0d62ed512f4cefd66)
运行如下命令将本地库中源代码推送到GitHub远端仓库:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-108-2.jpg?sign=1739276417-O0nPIJfrorVxc33DpMnFerMgi9bwNvCm-0-43877ae08d589c1a1efe9701b02de983)
Tips: 避免频繁地输入用户名和地址。
如果在git clone时使用的是https安全地址,在进行git push等操作时,总会提示输入GitHub账号和密码,可以运行如下命令将认证信息保存起来:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-108-3.jpg?sign=1739276417-mg1HkrG31sa1Zkx1JRaXsUKPBhw1GzVS-0-79c2e20bd7a79e4007c842aad0829d0c)
这样只需要输入一次,后续提交或拉取就不用再输入用户名和密码了。
这时,通过浏览器打开GitHub,登录后进入C库,即可看到刚添加的源代码文件。当然这个例子极为简单,实际工作中的操作要复杂得多,这就需要大家多使用多积累。