第一节:Git概述、基本概述和初步使用(关键词:Git安装、Git配置、git config --global、git log、工作区、暂存区、版本库、HEAD指针)


本节涉及Git命令

  • git init:初始化Git仓库
  • git status:查看仓库状态
  • git config:Git仓库配置
    • git config --system
    • git config --global
    • git config
  • git config --list:列出配置信息
  • git config --global user.name "zhangsan":配置用户名
  • git config --global user.email [email protected]:配置邮箱
  • git add:将改动的文件放入暂存区
  • git commit -m:将暂存区文件提交到版本库
  • git log:提交记录
    • git log --graph:以图形化方式展现
    • git log --pretty=format"%h %s":只展现哈希值和时间

一:Git概述

Git:Git 是一个开源的分布式版本控制系统(软件),用于敏捷高效地处理任何或小或大的项目。由Linus Torvalds于2005年创建的。Git旨在帮助开发人员更好地管理代码的变更,从而使多人协作更加高效和简单。使用Git,开发人员可以在本地保存代码的版本历史记录,并与其他开发人员共享和协作

  • 分布式 代码库不仅存在于中央服务器上,而且每个开发人员都可以将代码库完整地复制到本地,并在本地进行开发和版本控制的能力。换句话说,分布式版本控制系统允许多个开发人员同时在不同的计算机上对同一代码库进行修改和版本控制,而不需要连接到中央服务器
  • 版本控制 是一种记录和管理代码修改历史的技术,可以帮助开发人员追踪和管理代码的变更,以及在需要时恢复到特定的版本。版本控制可以追踪代码库中的每个文件和目录的历史修改记录,包括每个修改的时间、谁修改的、修改的内容以及为何进行修改等信息。这使得开发人员可以轻松地查找代码修改的来源,并且可以在代码出现问题或需要回退到之前版本时快速恢复。版本控制经历了如下四个阶段
    • 文件控制
    • 本地控制
    • 集中式控制
    • 分布式控制

Git和SVN是分布式版本控制和集中式版本控制的两个代表,其区别如下

  • 分布式 vs 集中式
    • Git是一种分布式版本控制系统:每个开发人员都可以在本地存储代码库,并且可以在本地进行版本控制
    • SVN是一种集中式版本控制系统:所有的代码库都存储在中央服务器上,每个开发人员需要从中央服务器上获取最新的代码,并将代码提交回中央服务器
  • 分支管理
    • Git具有更强大和灵活的分支管理能力:在Git中,开发人员可以轻松地创建、合并和删除分支
    • 在SVN中,分支管理相对较为复杂
  • 效率 Git在处理大型代码库时比SVN更加高效。Git使用了一些先进的技术来加速代码的传输和版本控制,使得开发人员可以更快地执行代码的更新、提交和分支操作
  • 版本控制 Git和SVN在版本控制方面也有一些不同
    • Git跟踪的是文件的内容:这意味着在Git中,如果一个文件的内容没有发生变化,那么它的版本号也不会发生变化
    • SVN跟踪的是文件的版本:这意味着在SVN中,即使文件的内容没有变化,它的版本号也会随之增加

在这里插入图片描述

需要注意:Git是一款本地版本控制工具,所以在安装Git时是要安装在自己的计算机上,而所谓的中心是不需要安装,是一个进行托管的地方,例如著名的GitHub。在自己计算上进行版本控制,然后在有网络的情况下可以根据自己意愿将文件进行推送(push)

在这里插入图片描述

二:Git安装与配置

(1)安装

以Windows下Git安装为例,其网页为:点击跳转
在这里插入图片描述

相关安装过程看查看下面这个博文,其实可以一路狂点next

安装成功后,在任意位置处右键会出现"git bash here"字样

在这里插入图片描述

安装好Git后就可以用它来对你的项目(文件夹)进行版本控制或管理了。双击进入一个待管理的文件夹。在Git中会把这个文件夹称之为Git仓库,然后右键选择git bash here,输入命令git init来初始化Git仓库

在这里插入图片描述

可以看到,此时该文件夹(仓库)内会生成一个名为.git的隐藏文件夹,它存储的是Git相关的配置信息
在这里插入图片描述

接着,使用git status命令查看管理目录下的文件状态

在这里插入图片描述

在进行下一步操作前,我们需要对Git做一些必要的配置

(2)配置

Git中提供了git config命令来对Git进行配置,git config所生成的配置文件有三个级别,所能管理的范围也不同,每个级别的配置都会覆盖上层相同的配置

  • git config --system:是系统中对所有用户都普遍适用的配置
  • git config --global:是针对当前用户适用的配置。在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER
  • git config:只针对当前项目(就是Git所要管理的那个文件夹)进行配置,其对应的配置文件就是.git/config

①:查看配置信息

要检查已有的配置信息,可以使用 git config --list 命令

  • git config --system --list:查看系统级配置信息
  • git config --global --list:查看用户配置信息
  • git config --list:查看项目配置信息

在这里插入图片描述

②:配置用户信息

在使用前必须配置用户信息,它有两个字段分别为user.nameuser.eamil

git config --global user.name "zhangsan"
git config --global user.email [email protected]

三:初步使用

完成上述安装和配置后就可以管理你的文件了,这里我们创建一个test.md文件,然后使用git add “文件名”命令将该文件纳入管理,此时文件图标发生变化

在这里插入图片描述

**对文件的新增也属于版本的变化,所以此时可以使用git commit -m "描述信息"**来生成一个版本

在这里插入图片描述

接着我们对该文件进行修改,此时文件图标变为红色感叹号

在这里插入图片描述

对文件的一次修改就会形成一个版本,所以重复git addgit commit再生成一个版本

在这里插入图片描述

最后我们使用git log命令来查看以下这个文件的版本更迭记录

在这里插入图片描述

继续再修改一次,再生成一个版本
在这里插入图片描述

四:Git三大区域

Git有三个主要的区域,分别是

  • 工作区 包含了整个项目的所有文件和文件夹。在 Git 中,开发者在工作区中修改文件,添加、删除和重命名文件等操作都在工作区中进行。当文件在工作区被修改时,Git 会将其标记为已修改(modified)状态(红色)。这意味着 Git 检测到文件的内容已经被更改,但是这些更改还没有被 Git 记录下来
  • 暂存区 暂存区是一个中间区域,它用于暂时存放修改后的文件,以便下一次提交(commit)时一次性提交所有的更改。在 Git 中,开发者需要手动将修改的文件添加到暂存区。可以使用 git add 命令将文件添加到暂存区。一旦文件被添加到暂存区,它们就被标记为已暂存(staged)状态(绿色)。这意味着 Git 已经准备好将文件的更改提交到版本库
  • 版本库 版本库是 Git 的核心区域,它包含了项目的完整历史记录。在 Git 中,每一次提交(commit)都会形成一个新的版本,这个版本包含了提交时暂存区中的所有文件。当文件被提交到版本库时,它们就被标记为已提交(committed)状态。一旦文件被提交到版本库,Git 就会保存文件的完整历史记录,包括每一次修改的内容和时间戳。开发者可以使用版本库中的历史记录来查看、比较和还原以前的版本。通过使用git log命令,可以查看版本库中的提交历史记录

综上所述,Git 的三个区域分别代表了开发者在 Git 中进行版本控制的不同阶段,在这些不同的区域中,开发者可以进行不同的操作,并通过这些操作来控制项目的版本历史记录

  • 工作区表示修改的状态
  • 暂存区表示准备提交的状态
  • 版本库表示已提交的状态

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系(了解即可):

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树
  • 图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 git rm --cached <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • 当执行 git checkout . 或者git checkout -- <file>命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
  • 当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
    在这里插入图片描述

五:HEAD指针

  • 注意:关于分支我们后面介绍,目前我们使用Git时只有一条分支,也即主分支(master)

在Git中,HEAD是一个指向当前所在分支的指针,它通常指向最近一次提交的提交对象。HEAD指针实际上是一个符号引用,可以理解为一个指针,它指向当前分支的最新提交。当你使用git commit提交一个新的修改时,HEAD指针会自动移动到新的提交,同时分支也会随之更新。当你切换分支时,HEAD指针会自动指向新的分支,并将工作目录中的文件更新为该分支的最新提交

在这里插入图片描述

其实HEAD指针指的就是HEAD文件,它位于下面路径中
在这里插入图片描述

打开后观察,发现它其实记录的就是master分支上最新的提交
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39183034/article/details/129835402