学习 Git,看这一篇就够了!
大家好,我是CUGGZ。今天来分享一下Git相关的基础知识。
文末抽奖,两份掘金周边等你来拿,滑动到文末参与抽奖!
一、Git 基本概念
1. Git 历史
Git 是最流行的分布式版本控制系统(Distributed Version Control System,简称 DVCS)。它由 Linus Torvalds 创建,当时非常需要一个快速、高效和大规模分布式的源代码管理系统,用于管理 Linux 源代码。
由于 Linus 对几乎所有现有的源代码管理系统抱有强烈的反感,因此他决定编写自己的源代码管理系列。2005 年 4 月,Git 就诞生了。到了 2005 年 7 月,维护工作就交给了 Junio Hamano,自此他就一直在维护这个项目。
虽然最初只用于 Linux 内核,但 Git 项目迅速传播,并很快被用于管理许多其他 Linux 项目。现在,几乎所有的软件开发,尤其是在开源世界中,都是通过 Git 进行的。
2. 版本控制系统
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。版本控制技术是团队协作开发的桥梁,助力于多人协作同步进行大型项目开发。软件版本控制系统的核心任务就是查阅项目历史操作记录、实现协同开发。
常见版本控制主要有两种:集中式版本控制和分布式版本控制。
(1)集中式版本控制系统
集中式版本控制系统,版本库是集中存放在中央服务器的。工作时,每个人都要先从中央服务器获取最新的版本。完成之后,再把自己添加/修改的内容提交到中央服务器。所有文件和历史数据都存储在中央服务器上。SVN 是最流行的集中式版本控制系统之一。
集中式版本控制系统的缺点就是必须联网才能使用,如果使用局域网还好,速度会比较快。而如果是使用互联网,网速慢的话,就可能需要等待很长时间。除此之外,如果中央服务器出现故障,那么版本控制将不可用。如果中心数据库损坏,若数据未备份,数据就会丢失。
(2)分布式版本控制系统
分布式版本控制系统,每台终端都可以保存版本库,版本库可以不同,可以对每个版本库进行修改,修改完成后可以集中进行更新。虽然它没有中心服务器,但可以有一个备份服务器,它的功能有点类似于 SVN 的中央服务器,但它的作用仅是方便交换修改,而不像 SVN 那样还要负责源代码的管理。Git 是最流行的分布式版本控制系统之一。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑损坏不会影响到协作的其他人。
(3)SVN vs Git
Git 相较于 SVN:
提交速度更快:因为在 SVN 中需要更频繁地提交到中央存储库,所以网络流量会减慢每个人的速度。而使用 Git,主要在本地存储库上工作,只需每隔一段时间才提交到中央存储库。没有单点故障:使用 SVN,如果中央存储库出现故障,则在修复存储库之前,其他开发人员无法提交他们的代码。使用 Git,每个开发人员都有自己的存储库,因此中央存储库是否损坏并不重要。开发人员可以继续在本地提交代码,直到中央存储库被修复,然后就可以推送他们的更改;可以离线使用:与 SVN 不同,Git 可以离线工作,即使网络失去连接,也可以继续工作而不会丢失功能。
3. Git 安装
在Git官网下载、安装即可:https://git-scm.com/download
安装完成之后,可以使用以下命令来查看 Git 是否安装成功:
git --version
如果安装成功,终端会打印安装的 Git 的版本:
4. Git 初始化
要给项目初始化一个Git仓库,可以在终端中打开项目目录,执行以下命令即可:
git init
初始化之后,就会创建一个名为.git的新子文件夹,其中包含 Git 将用于跟踪项目更改的多个文件和更多子目录:
在使用 Git 进行代码管理时,不希望一些文件出现在跟踪列表中,比如node_modules文件。这种情况下,可以在项目的根目录中创建一个名为.gitignore的文件,在该文件中列出要忽略的文件和文件夹,来看一个示例:
# 所有以.md结尾的文件
*.md
# lib.a不能被忽略
!lib.a
# node_modules和.vscode文件被忽略
node_modules
.vscode
# build目录下的文件被忽略
build/
# doc目录下的.txt文件被忽略
doc/*.txt
# doc目录下多层目录的所有以.pdf结尾的文件被忽略
doc/**/*.pdf
注意:以 # 符号开头的行是注释。
我们可以在本地克隆Git存储库上的代码,首先要找到Git存储库上的HTTPS或SSH的地址,如下:
然后使用以下命令将远程仓库克隆到本地:
git clone https://github.com/facebook/react.git
5. Git 结构和状态
从Git的角度来看,可以在三个区域进行文件更改:工作区,暂存区和存储库。
工作区:本地看到的工作目录;暂存区:一般存放在.git