Git教程(二):Git基础

1. 安装

首先,我们需要下载Git并将其安装在我们的计算机上。我们可以在Git官网https://git-scm.com上找到适合我们操作系统的版本。在这个网站上,你可以找到适用于Windows、Mac和Linux等操作系统的安装程序。

在下载完成后,双击安装程序并按照提示进行安装。默认情况下,Git将安装在C:\Program Files\Git(Windows)/usr/bin/git(Linux)目录下。

2 初始配置

1
2
3
4
5
6
git config --global user.name "username"
git config --global user.email "xxxx@gmail.com"
# 记住密码
git config --global credential.helper store
# 查看配置
git config --global --list

3. Git的基本原理

3.1 一些基本概念

  • main: 默认主分支
  • origin: 默认远程仓库
  • HEAD:指向当前分支的指针
  • HEAD^:上一个版本
  • HEAD~4:上4个版本

3.2 Git的工作原理

Git是一个分布式版本控制系统,它的核心是一个简单的数据结构——Git仓库。Git仓库是一个存储所有项目文件的目录,它包含了一个隐藏的.git目录,这个目录中包含了Git仓库的所有数据。它的基本原理可以简单概括为:将文件的变化记录下来并进行跟踪,以便在需要时可以方便地回溯历史状态。
具体来说,Git将文件的变化保存在一个名为“仓库”的数据结构中,每次修改都会生成一个新的“提交(commit)”,记录了该次修改的具体内容以及修改者的信息、时间戳等元数据。提交可以形成一条有向无环图(DAG),其中每个节点表示一个提交,每个提交可以有多个父节点(合并操作时会用到)。
Git采用哈希值来标识每个提交,这保证了提交的唯一性,也可以方便地进行校验。Git还提供了一些命令行工具和图形界面工具,以便用户可以方便地查看和管理提交历史、分支、标签等信息。

3.3 Git中文件的三种状态

Git仓库中的文件可以处于三种状态之一:已提交(committed)、已修改(modified)和已暂存(staged)。已提交表示数据已经安全地保存在本地数据库中。已修改表示修改了文件,但还没有保存到数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 未跟踪(Untracked):文件在本地,未添加到git仓库,不参与版本控制,执行git add 后 状态变为 Staged

  • 未修改(Unmodified):文件已入库,未修改,即版本库中的快照内容与本地文件一致。修改后转为Modified,执行git rm后移出版本库,变为Untracked

  • 已修改(Modified):文件已入库,已修改,即版本库中的快照内容与本地文件不一致。使用git checkout则丢弃修改,返回Unmodified状态,git add后进入暂存Staged状态。

  • 暂存(Staged):暂存状态,执行git commit则修改同步到本地库中,文件变为Unmodified状态,执行git reset HEAD filename 取消暂存,文件变为Modified状态

    可以使用git status [filename]来查看指定文件的状态。

下面这张图演示了文件的三种状态以及它们之间的转换过程:
image-20210409050404549

下面这三张图演示了在修改文件后执行git addgit commit命令的过程:
image-20210409042142708

image-20210409042214715

image-20210409042230437

3.4 Git的四个工作区域

Git有四个区,分别是工作区(Working Directory)、暂存区(Staging Area/Index)、本地仓库(Local Repository)和远程仓库(Remote Repository)。

  • 工作区:也叫工作目录,本地工作目录,也就是开发者实际操作的目录,包含项目的源代码、文档等文件。

  • 暂存区:也叫待提交更新区,存放临时变动,本质上是文件,保存即将提交的文件列表。在进行提交前,开发者可以选择将工作区中的某些文件或修改暂时存放到暂存区,通过执行git add命令将它们添加到暂存区,这些被添加的文件就成为了“暂存文件”。暂存区相当于是一个缓存区,里面存放着即将要提交的内容。

  • 本地仓库:当开发者执行git commit命令时,Git会将暂存区中的所有文件打包成一个新的提交,并将其保存到本地仓库中。本地仓库是Git保存项目历史记录的主要地方,每次提交都会在本地仓库中创建一条新的提交记录。本地仓库可以通过git clone或者git init来创建。

  • 远程仓库:开发者可以将本地仓库中的内容推送到远程仓库(如GitHub、GitLab、Gitee等),这样其他开发者就可以从远程仓库中拉取最新的代码。远程仓库通常是分布式团队协作中的核心,它能够将分布在不同地方的开发者和代码联系在一起。