Git 系列一:Git 原理与配置

Git 是目前最为强大的版本控制工具,无论是个人还是团队使用都非常的方便,使我们提高效率的一大利器;“工欲善其事必先利其器”,掌握先进的工具,比仓促出发,磕磕绊绊更加有利;

本文是 Git 系列的第一篇,主要介绍 Git 的基本原理,以及配置
欢迎关注公众号【前沿AI】

一、集中式版本控制 vs 分布式版本控制

Git 是分布式的版本控制工具;

1)集中式版本控制

集中式版本控制实际上是版本库集中存放在中央服务器中,个人电脑不包含版本库的修改记录【即只包含当前的修改,没有任何历史版本】;

这样,工作的时候需要从版本库中获取最新的代码;工作工作结束后,需要将本地代码推送到中央服务器;

在这里插入图片描述
但是这种方法存在很严重的缺点:

  1. 安全系数低:因为版本是集中存放的,所以一旦中央服务器出现问题,那么所有的历史版本将会丢失;
  2. 因为本地没有历史版本,所以集中式版本控制必须联网才能工作;就是需要经常地从中央服务器拉取代码或者推送到中央服务器,如果网速很慢,就很浪费时间;
2)分布式版本控制

分布式版本控制的特点是没有中央服务器,每一台电脑都包含所有的历史版本;当两个人或者多个人合作的时候,只需要将自己的修改推送给对方就可以;

如果两个人在同一个分支(后面会讲到),修改了同一个文件,Git 会自动进行合并,当合并产生冲突而不能解决的时候,通常可以使用外部合并工具,如 BeyondCompare ,来解决;

在这里插入图片描述
分布式版本控制的优势:

  1. 不需要联网:自己的电脑就有所有的历史版本,当自己修改结束以后,直接修改自己本地的版本库即可;当多人合作的时候,隔一段时间相互推送即可;
  2. 不必担心历史版本丢失:因为每个人电脑中都包含所有的历史版本,因此,只要不是所有人的历史版本都丢失了,其他人只要从未丢失的人那里复制一份即可;

但是,实际使用中,如果很多人之间相互推送也是比较麻烦的,所以会选择一台服务器作为“虚拟中央服务器”,所有都从这个“中央服务器”拉取历史版本,然后所有人的修改都推送到“中央服务器”;

这样做并不是变成了集中式版本控制,只是为了当合作者比较多的时候,交换代码比较方便。比如,我们通常使用 GitLab 作为“虚拟中央服务器”,或者说远程仓库,但是没有这个“中央服务器”同样可以工作,只是比较麻烦

二、Git 原理

Git 中文件可能处于下面三个状态之一:已修改(modified)、已暂存(staged)、已提交(committed)

对应于这三种状态 Git 项目会有三个阶段:工作区(working directory)、暂存区(Staging Area)、版本库(.git directory / Repository)

这里讲的版本库是本地版本库,还有一个远程版本库,就是我们上一节中讲到的为了交换代码的方便而配置的“远程服务器”

1) 三个基本状态的理解:
  1. 已修改:对文件进行了修改,但是还没有保存到数据库中;处于已修改状态的文件位于工作区
  2. 已暂存:对一个已修改的文件的当前版本做了标记,这样它就包含在下次提交的快照中;处于已暂存状态的文件位于暂存区;
  3. 已提交:数据已经安全地保存在本地数据库中;处于已提交状态的文件位于版本库;

在这里插入图片描述

2) 三个阶段的理解:
  1. 工作区:对文件的任何修改都在工作区;更专业的说法是:将某一个历史版本从 Git 仓库的压缩数据中提取出来,放在磁盘上供使用修改;
  2. 暂存区:凡是使用 git add 命令操作后的文件处于暂存区;实际上暂存区是一个文件,保存了下次将要提交的文件列表信息;
  3. 版本库:凡是使用 git commit 命令操作之后的文件都存放在版本库;这里是 Git 用来保存项目的元数据和对象数据库的地方,是最重要的部分;

三、Git 的安装与配置

Ubuntu 系统:

sudo apt install git-all

Windows 系统:
官网地址

配置:

每一台计算机上只需要配置一次 Git 即可

1) 相关配置文件的理解
  1. /etc/gitconfig 文件:包含系统上每一个用户以及仓库的通用配置;执行 git config 时加上 --system 选项会读写这个文件中的内容【需要 root 权限】
  2. ~/.gitconfig 或者 ~/.config/git/config 文件:只包含当前用户的配置信息;执行 git config 时加上 --global 选项会读写这个文件中的内容;
  3. .git/config 文件:只针对当前仓库的配置;当进入某一个 Git 仓库时候,执行 git config 默认是读写这个文件夹;
2) 配置用户信息

安装 Git 之后第一步就是设置用户名和邮箱信息,因为每一个 Git 提交都会使用这个信息:

# 下面的配置会修改该用户下所有的 git 配置
git config --global user.name "your_name"
git config --global user.email "your_email"

# 针对单一 git 项目进行修改
git config user.email "you@example.com"
git config user.name "Your Name"

当想要针对不同的项目使用不同的用户名和邮箱时候,只需要修改当前项目下的配置文件即可;

3) 检查配置信息
git config --list
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值