第七章 版本控制器——git
- 一、git的历史
- 二、git的特点与发展
- 1、git的特点
- 2、git与github
- 二、git的安装与注册
- 1、git的安装
- 2、git的使用
- (1)github注册
- (2)创建远端仓库
- (3)将远端仓库镜像复制到本地仓库
- 指令
- 示例
- (4)git add
- 指令
- 示例
- (5)git commit
- 指令
- 示例
- (6)git push
- 指令
- 示例
- (7)git log
- 指令
- 示例
- (8)git rm
- 指令
- 示例
- (9)git status
- 指令
- 示例
一、git的历史
git的创始人是Linus Torvalds,或许有些人会觉得这个名字听起来很耳熟,没错,Linus Torvalds就是linux的创始人,我们曾在linux专栏的第一章中提及到这位伟大的人。
在2005年的时候,linux越来越受开发者的欢迎,越来越多的开发者向Linus Torvalds投稿有关更新linux内核的代码。随着投稿越来越多,linux内核越来越完善,但同时也出现了一个严重的问题:版本管理问题。每一次的更新都代表着版本的迭代,迭代的次数多了,版本之间的差异在Linus Torvalds的头脑中就逐渐模糊了。此时,Linus Torvalds急需一个版本管理工具。
当Linus Torvalds产生这种需求的时候,他开始寻找市场上的版本管理工具。最终,Linus Torvalds找到了一个付费的版本管理工具:BitKeeper(BK)。由于BK的创始人Larry McVoy 是linux的粉丝,所以他讲BitKeeper免费提供给linux的开发者。在使用了一段时间后,一位linux的开发者的试图破解BitKeeper,这一行为使得BitKeeper十分不满,因此,BitKeeper终止了linux开发者的免费使用权。
使用权被终止后,Linux的创始人总结了BitKeeper的一些优缺点,同时结合了一些自己的想法。Linus Torvalds在十天左右的时间里写出了一款开源的版本管理软件——git。git由此而来,但并没有止步于此。到现在为止,git可以说已经成为了世界上最受欢迎的版本管理软件。
二、git的特点与发展
1、git的特点
在git创建之前,大部分的版本管理工具几乎都是采用的集中化的版本控制系统。这类系统都有一个单一的版本集中管理的服务器,在服务器上保存着所有的版本,相关的开发人员会通过客户端连接到这台服务器,然后再取出最新的文件版本或者提交自己的更新。但这种做法存在着一个很大的问题,如果中央的服务器出现了问题,那么所有的开发者都无法从服务器中下载最新的代码版本。除此以外,如果中央的服务器被损坏了,这就有可能导致代码版本丢失。由于只有这台服务器存有所有的代码版本,所以一旦丢失,将没有备份修复。综上所述,这种版本管理系统是有很大的风险的。
git则采用了一种分布式的版本管理系统。开发者并不只是提取最新的代码版本。而是将代码仓库整个镜像复制下来,这就使得每个开发者的电脑上都有一个完整的代码备份。如果某个开发者的电脑发生了一些意外,并不会影响到其他开发者的开发进度。同时,如果代码发生了丢失,其他开发者也可利用完整的镜像仓库对其进行修复。
2、git与github
作者相信很多程序员都听说过github这个网站。但是大部分人并不知道git与github的区别。通过上面的介绍,我们其实可以对git做一个总结。git是一款软件,这款软件可以将远端的代码仓库镜像复制到本地。而github是一个网站,这个网站是一个免费的代码托管仓库。即我们的代码可以让github网站帮助我们托管各种版本的代码。二者是相互配合的。如果用上学来做比喻的话,家就是本地,学校就是github,交通工具就是git,人就可以比作代码。我们可以通过交通工具git实现家(本地)与学校(github)的学生流动。
二、git的安装与注册
1、git的安装
这里以乌班图的linux为例。
sudo apt install git
2、git的使用
我们想要使用git,就得有一个托管平台来记录我们的代码,那么我们这里选择的平台就是gitee,由于github是一个国外的网站,所以访问速度略微有一些慢,如果大家无法科学上网的话,可以使用国内的代码托管平台:gitee(码云)。作者在这里选择码云还有一个理由,有的时候即便能够科学上网,github在clone,push的时候也经常出现一些网络错误。
(1)github注册
首先我们在网站gitee上注册一个自己的账号。
(2)创建远端仓库
创建成功后,就可以找到这个仓库对应的链接,这个链接的作用是方便我们将远端仓库镜像复制到本地。
(3)将远端仓库镜像复制到本地仓库
指令
git clone 仓库链接
示例
这里需要注意的是,第一次使用的时候,会让我们输入gitee的用户名和密码。
(4)git add
指令
首先,我们先进入到本地的镜像仓库中,然后将我们想要添加的文件复制或剪切到仓库中。但此时我们直接粘贴过来的代码是不受git软件的管理的。因此,我们需要通过下面的指令告诉git软件我们想要添加的代码。
git add [文件名]
这里的文件名可以直接写.
,.
的意思是当前目录,即仓库中。所以git会将仓库内不受git管理的文件管理起来。
示例
(5)git commit
git add是将代码提交到暂存区,暂存区的概念这里不做细致的描述。git commit是将代码提交到分支。二者表面上看起来作用差不多,但实际上还是有区别的。
指令
git commit -m "代码日志(可以写你修改了什么内容)"
示例
(6)git push
将本地仓库同步到远端仓库。第一次提交可能需要写用户名和密码。
指令
git push
示例
此时我们在码云上就能够看到我们提交的代码了。如下图:
以上介绍的指令的作用是将自己的代码提交到远端仓库。
总结一下:流程为:git clone --> 代码复制到仓库 --> git add . --> git commit -->git push
除此以外,我们还可以通过一些指令来查看仓库的一些信息。
(7)git log
当我们将仓库复制到本地以后,我们可以通过下面指令查看该仓库的提交日志。
指令
git log
示例
(8)git rm
我们不仅可以添加文件,也可以删除一些文件。删除之后再进行:git add --> git commit --> git push,远端的仓库就会删除对应的文件。
指令
git rm 文件名
示例
(9)git status
查看远端仓库和本地仓库的同步状态
指令
git status