![完美应用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=1739553934-LW896ruJNRMMWjzVY4jMza1PRmQOFNLZ-0-561ddd522f847c74e3a93702452ef631)
图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=1739553934-zADhmEOmmAj1K9gybjMBqrBVMwC9FxvG-0-f109c5288650fb8d3426602172300c5b)
图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=1739553934-eY3c5z2kQvvECPAcfq9oSaj5CJpQTR2g-0-300d893acd948d1be354865d81039942)
图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=1739553934-gqrDjQ8iSNF85QC2lbluMhHflGSuhkoE-0-59cdf86fab2a0c7668c0a909292e3fff)
成功安装后,可以键入如下命令检测安装:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-3.jpg?sign=1739553934-tazZ7QP5hL73T4bcw72vAMOI5QI00Lss-0-cc08da5d171a37cd6a1392f2810dc276)
2)配置使git更高效便捷
安装好后就可以使用了,运行如下命令查看git的默认配置:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-4.jpg?sign=1739553934-tmaGKUaAfegiaVbrR77n5pvAuOwzYFmi-0-65e3e55db41415e8f521d26e985cdd70)
由于还没有任何配置,所以显示为空。
为了使用git更加顺手和高效,需要为git的常用命令设置一些别名,便于日后操作:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-105-5.jpg?sign=1739553934-29rlVnmnhJEJJHbkSudZhpb1vKxfUMpl-0-c08ce91bcbd5b187ef50a99423a6a8a3)
添加用户电子邮件和用户名称,具体操作如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-1.jpg?sign=1739553934-3PIIB1ciQBBGupJdQiD2VTpkio2dfQvM-0-a5c014a8ba940fe9e2bb5739c3748e1f)
3)指定默认编辑器为Vim
多数开发者都有自己熟悉的编辑器,将自己最熟悉的编辑器设置为git默认的编辑器会比较方便,具体方法如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-2.jpg?sign=1739553934-4hGrE8kTZUmNisd1UpojEMkLl8l4C7OK-0-bd5fc6ef70a1a686925090ab5a03a0d2)
启用git输出显示颜色:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-3.jpg?sign=1739553934-majKG4MlLL7R3ItTcDcrhGyoDCxz68WH-0-52023fd2dad1fff64935ed59683c95fb)
全部设置完成后,再次运行git config-l命令,就可以看到上述配置了:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-106-4.jpg?sign=1739553934-JKuSCY8j0AV9vwVAvdMoX0V0tPmHVLxW-0-2f88ca120906fbd6efef06f5dd638952)
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=1739553934-uboQkAj7jCA8kos8JU4u8ci1yxmYcVXu-0-e7ffb37de6e3ebaee32aaad9d233dbc7)
成功创建后切换到~/.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=1739553934-xJ5m7NHEvulz2wocwMsWY6Lp9VktzklX-0-488c8a43a8a6b4c1012f10472aadd6c3)
图6-13 保存SSH key到GitHub
确认无误后保存,即可使用如下命令测试与GitHub服务器的连通性:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-2.jpg?sign=1739553934-N50xYLxPilROjiNYkNKBywkHwvTQC3KD-0-1e6f45d3c9bc48e614bb228433d59777)
首先输入yes,如果获得如下提示:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-3.jpg?sign=1739553934-maYPb10YNr7CbDYVceZkJCW7BheWhW7w-0-f090f82da2269e779474222abcdefdaa)
说明连接没有任何问题,已准备就绪。
6.3.3 使用git将代码推送到GitHub
首先在本地创建或编辑源代码,然后添加、提交到本地代码库,之后再推送到GitHub,具体操作如下。
从远端复制和检测代码:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-4.jpg?sign=1739553934-IzQW2Onh0fDRMxo8P8cGbVVRH1EQHYKc-0-c2f819bc29022422ddf6522ab2ed2312)
在本地创建源代码,示例如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-5.jpg?sign=1739553934-dPTCKL7SMmn90KEy1USW8AtEVAgWWaZt-0-82ebed6e473aedd8552c992c6b730c03)
代码如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-107-6.jpg?sign=1739553934-tbMcr7rYV89f3puUL6lJrHlz5xXUAWac-0-c750923240fbdcb69727e1fa79913247)
完成后保存退出即可。
创建源代码文件后,首先要添加和提交到本地代码库中,具体操作如下:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-108-1.jpg?sign=1739553934-SkEGOMcX0yfEHoOjeKS4Y2c8QV5Rw8rH-0-d098f2a95c2ff0350dfa3ce712e21c4e)
运行如下命令将本地库中源代码推送到GitHub远端仓库:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-108-2.jpg?sign=1739553934-2iUWDbcqzR75LgX01GjuNPaDrfJWClRy-0-0ea83d4ffac209222965c4906a2745f6)
Tips: 避免频繁地输入用户名和地址。
如果在git clone时使用的是https安全地址,在进行git push等操作时,总会提示输入GitHub账号和密码,可以运行如下命令将认证信息保存起来:
![](https://epubservercos.yuewen.com/8A7C95/19823444008569906/epubprivate/OEBPS/Images/38718-00-108-3.jpg?sign=1739553934-WZSBrVBdcgJjkyUe93Ep7Ta3yBain0fm-0-b46c1c85a8f83276d37b425c342368d5)
这样只需要输入一次,后续提交或拉取就不用再输入用户名和密码了。
这时,通过浏览器打开GitHub,登录后进入C库,即可看到刚添加的源代码文件。当然这个例子极为简单,实际工作中的操作要复杂得多,这就需要大家多使用多积累。