Git 是 Linux 之父 Linus 为维护 Linux 社区所开发的一款分布式版本控制工具。
学会使用 Git 能够为我们带来很大的帮助,接下来我就来简单带大家了解 Git 这个工具。
一、版本控制工具
刚才我们说过:“Git 是一款分布式代码版本控制工具” 因此,让我们先来了解代码版本控制工具是什么。
我们想象以下场景:
如果你在写一篇文章,在写完后你又经过了多次的修改,此时我们就习惯于把每个版本都复制下来,保存副本,这样当我们文章出现问题时,就可以对比以前的版本查找问题所在。
在上面的的情景中,我们对文章不同版本的拷贝就可以看作是对这篇文章进行了版本控制,但是大家也能轻而易举的发现这样的问题所在,也就是这种版本控制的方法过于繁琐,完全不优雅,而且在实际中,协同工作十分常见,这时就需要大家同时对一个项目进行版本控制。
因此,版本控制工具就孕育而生。
集中式版本控制工具
在对我们的主人公 Git 所属于的分布式版本控制工具介绍之前,请先让我们了解集中式版本控制工具(例如 CVS 及 SVN)。
我们来看看集中式的版本控制工具是如何进行协同工作的版本控制的:
集中式的版本控制系统,所有的版本库是放在中央服务器中的,也就是说我们每一次的修改上传都是保存在中央服务器中的。中央服务器就是个大仓库,大家把产品都堆里面,每一次需要改进和完善的时候,需要去仓库里面把文件给提出来,然后再操作。
这种做法也存在弊端,如:当中央服务器,或网络出现故障时,大家就无法再对我们的代码进行版本控制,因此导致他们在故障的这段时间,谁都无法继续进行工作。
分布式版本控制工具
为了解决集中式版本控制工具的种种弊端,分布式版本控制工具孕育而生。所谓分布,就是把版本库整个克隆到本地,让每台计算机上都还有一个完整的版本库。这样,即使在断网的环境下,我们也可以进行工作。
这时,如果我们想进行协同工作时,仅需要把最新的版本库共享给对方就能保证每个人的版本保持最新。
但是这里面有个问题,就是一个团队很大的情况下,大家都去修改,到底找谁同步版本库,不乱套了嘛。而且,大的开发项目也不是简单的两台计算机之间的版本互推就可以得到完整的版本库的。所以,分布式版本控制系统中通常也会有一台充当“中央服务器”的计算机,被称为远程库(如:GitHub、码云)。
读到这,您可能觉得,又绕回到集中式版本管理系统了。但其实,两者间存在着本质区别,即集中式版本工具必须在中央服务器内才能进行版本控制,而分布式版本控制工具不然。而且,分布式版本控制依靠的远程库,一般来说几乎不可能出现故障。
二、Git 的基本原理
Git 的使用流程是:工作区>>暂存区>>本地仓库>>远程仓库
工作区:即我们在电脑里储存项目的目录。
暂存区:准备进行版本保存的文件列表。
本地仓库:在本地保存的版本控制后的文件列表。
远程仓库:基于网络服务器的远程代码仓库(代码托管平台)。
局域网中的远程仓库
GitLab:在局域网(如:校园网)中搭建的远程库。
互联网中的远程仓库
GitHub:Git 官方的搭建远程仓库。
Gitee:国内版的 GitHub。
三、Git 的安装
进入 Git 官网,根据不同操作系统进行下载。(建议下载最新版)
安装选项在这里进行跳过,我的建议是:如果你不知道选项对应的是什么意思请直接选择使用默认设置。
详细的安装选项解释视频参考:尚硅谷 Git 安装和客户端的使用_哔哩哔哩
四、Git 命令行的基本使用
在完成安装 Git 后,在任意文件夹内右键,点击 Git Bash Here 以打开命令行。
进入到 Git 的命令行,由于 Git 与 Linux 是创作者是以为,所以,Git 支持几乎所有的 Linux 的指令,下面我简单列举常用的 Linux 指令。
指令 | 功能 |
---|---|
cd 路径 | 进入对应路径,支持输入相对路径 |
ls | 输出当前目录下的所有文件 |
touch 文件名 | 在当前目录创建文件 |
cat 文件名 | 显示当前目录中的文件的内容 |
vim 文件名 | 使用 vim 对当前目录下的文件进行编辑 |
cp 文件1 文件2 | 创建名为文件2的文件1副本 |
rm 文件名 | 删除文件 |
mkdir 文件夹名 | 创建文件夹 |
接下来介绍在 Git 命令行中的复制粘贴快捷按键
快捷键 | 功能 |
---|---|
Ctrl + Insert | 复制 |
ShIft + Insert | 粘贴 |
如果你不习惯使用此指令,可以使用以下方法把复制/粘贴的快捷键改为Ctrl+Shift+C/V
首先打开Git Bash
界面,右键单击标题栏,可以看到option...
这个选项,点进去(如下图)。在keys
标签下面的ShortCuts
中,第一个复选框前面的对勾去掉并点击Apply
+Save
,即可不使用Ctrl/Shift+Insert
复制粘贴了,之后勾选 Ctrl+Shift+letter shortCuts
,就可以使用Bash
终端常用的复制粘贴快捷键Ctrl+Shift+C/V
。