Git系列文章(1):Git入门

今天分享Git的入门内容,包括:版本控制系统的介绍、Git的简单历史、不同系统中安装Git的方法以及Git的相关初始配置。接下来开始今天的内容吧。

1 关于版本控制

Git是现在最流行的版本控制系统,甚至没有“之一”这中说法。大家在使用Git的时候,有没有想过版本控制系统是什么,我们为什么有需要它呢?

顾名思义,版本控制系统本质上一套系统,在这个系统里,按照时间顺序记录某个或一系列文件的变更,并且支持查看之前的系统。

在项目开发中使用版本控制系统可以为我们带来如下的好处:

  • 协同合作:使用版本控制系统可以在开发团队中高效地分享文件,支持对任何团队成员在任何时间、任何设备上对任何文件进行的修改进行高效的合并,最后形成统一的版本
  • 恢复之前的版本:使用版本控制系统可以很方便的回复到上一个已测试过的系统版本
  • 备份:使用分布式的版本控制系统,团队每个成员都可以在本地有一个完整项目的副本,如果Git服务器损坏,可从团队成员的本地仓库中得要
  • 记录发生过什么:使用版本控制系统,当对团队项目提交任何更改时,需提供对这个修改的简短描述,这样可以记录下版本之间的发展关系

版本控制系统的发展经历了本地版本控制系统集中式版本控制系统分布式版本控制系统,本篇文章不介绍每个阶段的详细历程,感兴趣的朋友可以查查网络资料或在书里查看。大家在这需要需要了解的几点是:

  1. 每个阶段都有其经典的版本控制系统,RCS是本地版本控制系统的常用工具,SVN是集中式版本控制系统的常用工具,Git是分布式版本控制系统的常用工具
  2. 分布式版本控制系统是当下最流行的版本控制系统,但在有些情况下,本地版本控制系统和集中式版本控系统也有使用,例如:在Mac OS X系统中,只要安装开发者工具,就会包含一个rcs命令

2 Git的简单历史

Git的诞生伴随着Linux的发展,是Linux的第二个伟大的作品。关于LinuxGit的故事是这样的:

集中式版本控制系统出名的两个工具:CVSSVN,分别诞生于1985年和2000年,Linux系统是1991年发布的。大家都知道,Linux系统内核是一个超大规模的开源软件的项目,按照我们的想法,管理这么大的项目需要一个版本控制系统,但是在Linux系统之父对于CVSSVN这些系统“不感冒”,反对在Linux项目中使用这些系统。在1991年到2002年这段时间内容,他们团队成员之间通过传递补丁和归档文件来实现对代码的维护。

随着Linux开源项目的贡献者越来越多,Linux迫于压力,选择一个版本控制系统,但是并不是集中式版本控制系统中鼎鼎有名的SVN,而是选择了一个商业的版本控制系统,这个系统并不是集中式的,而是分布式的版本控制系统。他们用这个系统用了3年左右的时间。这又是为什么呢?因为Linux项目贡献者实力太强了。

2005年,Linux项目中一个大牛打算对他们使用的商业版本控制系统进行反编译,开发一个类似的系统出来,但这个事被这个商业系统的开发公司知道了,要求收回对Linux社区的免费授权。所以,Linux社区选择了开发一个分布式版本控制系统工具,并在开发过程中汲取之前使用版本控制系统的经验教训,这才有了现有最流行的Git。自从2005年Git诞生以来,众多的开源项目都从SVN或其他版本控制系统迁移到Git

Git虽然是在Linux系统中开发的,但是可以在所有主流的操作上部署,包括LinuxWindowsMac OS X等。

3 Git基础

3.1 Git工作区、暂存区和版本库

Git中的工作区、暂存区和版本库的相关概念如下:

  • 工作区:在电脑中能够看到的文件夹目录,对应着项目某个版本的检出
  • 暂存区:通常是指.git目录下的一个index文件,所以也把暂存区称为索引,它存储着下次要提交时的相关信息
  • 版本库:本地的版本库一般是指工作区的.git目录,保存项目的元数据和对象数据库,是Git中最重要的部分

一个文件在这3个区域对应的状态分为:已修改、已暂存和已提交。已修改表示在工作区修改了文件,已暂存表示将修改后的文件做了标识并加入到暂存区,已提交表示修改的文件以完全地存入本地数据中。

3.2 快照,而非差异

这里的快照可不是“快速的出照片”的意思,而是应该理解为:记录某个系统或应用在某个时刻的状态。Git使用快照来管理数据。

Git之外的大部分版本控制系统以文件列表的方式存储信息,并将这些信息看做为一组文件并记录这些文件随着时间所做出的变更。

20210201-01

Git将数据看做为系统的一组快照,每次提交变更时,会抓取一张所有文件当前状态的快照,并更新执行最新快照的引用。每个快照均包含了完整的数据。在生成新的快照之前,Git会读取工作空间的所有数据,进行预存,然后在做处理,处理过程大概是:先和上一次的快照做对比,对于没有更改的文件数据,会从预存数据中冗余文件的数据中删除,改为保留指向上一版本中指向该部分的指针,而对于已修改的文件数据会保留下来,通过这个处理过程,可以大大的提高效率。

20210201-02

3.3 所有操作在本地执行

与集中式版本控制系统不同,Git的绝大部分操作都是在开发者个人电脑上完成的,一般无需从网络中其他的计算机中获取信息,使用速度不是一般的快。

3.4 Git完整性

Git的所有数据在存储前都会进行校验和计算,然后在用校验和来引用对应的数据,这个规则是及其重要的。因为,基于这个规则,不可能在Git不知情的情况下更改文件或目录的内容,从而使得Git能够在数据传输过程中检测出丢失的信息或者受损的文件。

Git使用的校验和机制叫做SHA-1散列,最后得到一个40个十六进制的字符串,这个值是根据文件内容或者Git目录结构计算得来的。Git并不是通过文件名在对象存储库中存储消息的,而是通过信息的散列值。

3.5 Git没有引入辅助目录

很多版本控制系统中,比如CVSSVN,都会在工作区每个目录下创建相应的目录或文件,这些目录如果在暴露在服务器上会非常危险,因为这会暴露出目录下的文件列表,让服务器配置的禁止目录浏览失效。另外,在SVN中,每个目录下的.svn辅助目录中还会存在文件的原始拷贝,从而增加文件搜索的时长。而Git没有这个问题。Git不会在工作区的每个目录下创建辅助目录或文件,除了在工作区根目录下的创建的.git(本地版本库)。

4 Git的安装方法

4.1 Linux下安装Git

Linux系统安装Git有2种方式:一种通过Linux包管理器安装编译好的Git软件包,另一种方法是下载Git源代码并在此基础上进行编译安装。

4.1.1 通过Linux包管理器安装Git

通过Linux包管理器安装Git是最简单的一种方式,并且会自动配置好命令自动填充等功能,但是有一个缺点,这种方式安装的Git可能不是最新的。

在一些Linux老系统中,这种安装方式需要注意的一点。在这些老的Linux系统中,Git安装包名称不是git而是git-core,因为GNU交互工具提前占用了git这个名字。但是,新版本的Linux系统中,GNU交互工具让出这个名字,可以使用git这个包名字安装Git。但是,平常大家使用的Linux系统,像Centos 7.6Ubuntu 18.06Ubuntu 20.04,可以不用考虑这个问题。

  • Ubuntu 10.10及以后的版本、Debian(squeeze)及更高的版本:
sudo apt install git-all

这条命令将安装必须的git安装包以及其他可选的安装包,比如:git-doc包含了GitHTML文档,安装后可通过git help -w <sub-command>在浏览器中打开相关子命令的HTML帮助。

  • Ubuntu 10.04及以前的版本、Debian(lenny)及以前的版本:
sudo apt install git-core
sudo apt install git-doc git-svn git-emial git-gui gitk

其中,git-core是必需的安装包,其他是可选项。

  • RHELFedoraCentOS中:
yum install git
yum install git-svn git-doc git-mail git-gui gitk

Git在这些系统中的发行的软件包都叫git

4.1.2 从Git源代码中安装

访问Git官方网站,下载Git源代码,例如:git-2.30.0.tar.gz,安装过程如下:

  1. 解压源代码包,并进入到对应的目录中
tar -xzvf git-2.30.0.tar.gz
cd git-2.30.0.tar.gz
  1. 参照解压后的INSTALL文件安装
make prefix=/usr/local all
sudo make prefix=/usr/local install

/usr/local这是Git的安装目录,可以对应的修改。安装后,可以在对应的安装目录下找到git命令

  1. 参照其他资料安装可选软件,比如:git-doc
4.2 Windows下安装Git

Windows下安装Git有多种办法,这里介绍如下两种:

  1. Git官方网站上下载安装包Git for Windows,需要注意的是,这个项目是独立于Git
  2. 安装Windows版本的GitHub软件,安装后,会自动提供命令行版本的Git,也包括GUI
4.3 Mac下安装Git

Mac下安装Git也有多种方法,这里也是介绍2种方法:

  1. 对于Mavericks 10.9及其更高的版本,当第一次在终端执行git命令时,系统会自动判断是否已安装Git如果没有将会自动安装
  2. Git官方网站上下载二进制安装程序进行安装

5 Git的初始化

通过上面的章节内容,相信你已经了解什么是Git并且在你的电脑上安装了Git。在正式使用之前,需要对Git做一些相对应的配置,这些配置只需配置一次就行。

Git提供了git config的工具,用来获取和设置配置变量,这些设置会存在:

  • 系统文件(例如:/etc/gitconfig),此文件包含了系统所有用户及其仓库的值,可通过git config --system选项设置系统的配置变量
  • 全局文件(用户主目录下的.gitconfig文件),此文件包括了当前系统用户设置的配置变量,可通过git config --global选项设置全局的配置变量
  • 仓库主目录文件(.git/config文件),此文件针对单个仓库

其中,版本库中的配置文件优先级最高,其次是全局的配置文件,最后才是系统及配置文件,也就说,如果三个文件中都用同样的配置,会使用版本库的中配置。

5.1 配置用户名及邮箱

可通过以下命令配置用户名及邮箱:

git config [--system][--global] user.name <your_user_name>
git config [--system][--global] user.emial <your_emial>

通过上述命令可告诉Git当前用户的姓名和邮件地址,当在提交信息时,会用到这些信息。其中,如果使用--system选项,需要拥有管理员权限

5.2 配置Git编辑器和颜色

可通过以下命令(以emacs为例)配置Git命令调用的编辑器,如果没有编辑器,将会使用系统默认的编辑器,比如vim

git config [--system][--global] core.editor emacs

或者在Windows系统中(以Notepad++为例):

git config [--system][--global] <notepad++.exe的路径> -multiInst

使用以下命令可开启颜色显示:

git config [--system][--global] color.ui true
5.3 查看个人设置

可使用命令git config --list查看当前Git可以找到的所有配置。

6 查看Git帮助

可使用命令git help <verb>git <verb> help或者man git <verb>查看指定命令的帮助信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值