【DevOps】Git 图文详解(一):简介及基础概念

本系列包含:

  • Git 图文详解(一):简介及基础概念
  • Git 图文详解(二):Git 安装及配置
  • Git 图文详解(三):常用的 Git GUI
  • Git 图文详解(四):Git 使用入门
  • Git 图文详解(五):远程仓库
  • Git 图文详解(六):Git 利器 - 分支
  • Git 图文详解(七):标签管理
  • Git 图文详解(八):后悔药 - 撤销变更
  • Git 图文详解(九):工作中的 Git 实践

Git 图文详解(一):简介及基础概念

  • 1.简介:认识 Git
  • 2.基础概念:Git 是干什么的?
    • 2.1 概念汇总
    • 2.2 工作区 / 暂存区 / 仓库
    • 2.3 Git 基本流程
    • 2.4 Git 状态

1.简介:认识 Git

Git 是当前最先进、最主流的分布式版本控制系统,免费、开源!核心能力就是版本控制。再具体一点,就是面向代码文件的版本控制,代码的任何修改历史都会被记录管理起来,意味着可以恢复到以前的任意时刻状态。支持跨区域多人协作编辑,是团队项目开发的必备基础,所以 Git 也就成了程序员的必备技能。
在这里插入图片描述
主要特点:

  • 开源免费,使用广泛。
  • 强大的文档(代码)的历史版本管理,直接记录完整快照(完整内容,而非差异),支持回滚、对比。
  • 分布式多人协作的代码协同开发,几乎所有操作都是本地执行的,支持代码合并、代码同步。
  • 简单易用的分支管理,支持高效的创建分支、合并分支。

Git 是 Linux 之父被迫开发的,为了解决 Linux 混乱的代码管理而开发的。李纳斯 · 托沃兹(Linus Benedic Torvalds),出生于 1969 年,来自芬兰,被誉为 Linux 和 Git 之父。

在这里插入图片描述

2.基础概念:Git 是干什么的?

2.1 概念汇总

概念名称
描述
工作区Workspace 就是在电脑里能看到的代码库目录,是我们搬砖的地方,新增、修改的文件会提交到暂存区。
暂存区stageindex 用于临时存放文件的修改,实际上上它只是一个文件(.git/index),保存待提交的文件列表信息。
版本库 / 仓库Repository Git 的管理仓库,管理版本的数据库,记录文件 / 目录状态的地方,所有内容的修改记录(版本)都在这里。
服务端 / 远程仓库originremote 服务端的版本库,专用的 Git 服务器,为多人共享提供服务,承担中心服务器的角色。本地版本库通过 push 指令把代码推送到服务端版本库。
本地仓库 用户机器上直接使用的版本库。
分支Branch 分支是从主线分离出去的 “副本”,可以独立操作而互不干扰,仓库初始化就有一个默认主分支 master
HEAD HEAD 类似一个 “指针”,指向当前活动 分支最新版本
提交Commit 把暂存区的所有变更的内容提交到当前仓库的活动分支。
推送Push 将本地仓库的版本推送到服务端(远程)仓库,与他人共享。
拉取Pull 从服务端(远程)仓库获取更新到本地仓库,获取他人共享的更新。
获取Fetch 从服务端(远程)仓库更新,作用同拉取(Pull),区别是不会自动合并。
冲突Conflict 多人对同一文件的工作副本进行更改,并将这些更改合并到仓库时就会面临冲突,需要人工合并处理。
合并Merge 对有冲突的文件进行合并操作,Git 会自动合并变更内容,无法自动处理的冲突内容会提示人工处理。
标签Tags 标签指的是某个分支某个特定时间点的状态,可以理解为提交记录的别名,常用来标记版本。
master(或 main 仓库的 master 分支,默认的主分支,初始化仓库就有了。GitHub 上创建的仓库默认名字为 main
origin/master 表示远程仓库(origin)的 master 分支。
origin/HEAD 表示远程仓库(origin)的最新提交的位置,一般情况等于 origin/master

2.2 工作区 / 暂存区 / 仓库

在这里插入图片描述
工作区、暂存区、版本库是 Git 最基本的概念,关系如下图:

在这里插入图片描述

  • 工作区Workspace):就是在电脑里能看到的代码库目录,是我们搬砖的地方,新增、修改的文件会提交到暂存区。
    • 在这里新增文件、修改文件内容,或删除文件。
  • 暂存区stageindex): 用于临时存放文件的修改,实际上它只是一个文件(.git/index),保存待提交的文件列表信息。
    • git add 命令将工作区的修改保存到暂存区。
  • 版本库 / 仓库Repository):Git 的管理仓库,管理版本的数据库,记录文件 / 目录状态的地方,所有内容的修改记录(版本)都在这里。就是工作区目录下的隐藏文件夹 .git,包含暂存区、分支、历史记录等信息。
    • git commit 命令将暂存区的内容正式提交到版本库。
    • master 为仓库的默认分支 masterHEAD 是一个 “指针” 指向当前分支的最新提交,默认指向最新的 master

在这里插入图片描述
如上图,为对应本地仓库目录的结构关系。

  • KWebNote 为项目目录,也就是 Git 工作区。
  • 项目根目录下隐藏的 .git 目录就是 Git 仓库目录了,存放了所有 Git 管理的信息。
  • .git/config 为该仓库的配置文件,可通过指令修改或直接修改。
  • index 文件就是存放的暂存区内容。

2.3 Git 基本流程

Git 的工作流程核心就下面几个步骤,掌握了就可以开始写 Bug 了。

  • 准备仓库:创建或从服务端克隆一个仓库。
  • 搬砖:在工作目录中添加、修改代码。
  • 暂存(git add):将需要进行版本管理的文件放入暂存区域。
  • 提交(git commit):将暂存区域的文件提交到 Git 仓库。
  • 推送(git push):将本地仓库推送到远程仓库,同步版本库。
  • 获取更新(fetch / pull):从服务端更新到本地,获取他人推送的更新,与他人协作、共享。

在这里插入图片描述

  • git commit -a 指令省略了 add 到暂存区的步骤,直接提交工作区的修改内容到版本库,不包括新增的文件。
  • git fetchgit pull 都是从远程服务端获取最新记录,区别是 git pull 多了一个步骤,就是自动合并更新工作区。
  • git checkout .git checkout [file] 会清除工作区中未添加到暂存区的修改,用暂存区内容替换工作区。
  • git checkout HEAD .git checkout HEAD [file] 会清除工作区、暂存区的修改,用 HEAD 指向的当前分支最新版本替换暂存区、工作区。
  • git diff 用来对比不同部分之间的区别,如暂存区、工作区,最新版本与未提交内容,不同版本之间等。
  • git reset 是专门用来撤销修改、回退版本的指令,替代上面 checkout 的撤销功能。

2.4 Git 状态

Git 在执行提交的时候,不是直接将工作区的修改保存到仓库,而是将暂存区域的修改保存到仓库。要提交文件,首先需要把文件加入到暂存区域中。因此,Git 管理的文件有 3 ( + 2 ) 3(+2) 3+2种状态:

  • 未跟踪untracked):新添加的文件,或被移除跟踪的文件,未建立跟踪,通过 git add 添加暂存并建立跟踪。
  • 未修改:从仓库签出的文件默认状态,修改后就是 “已修改” 状态了。
  • 已修改modified):文件被修改后的状态。
  • 已暂存staged):修改、新增的文件添加到暂存区后的状态。
  • 已提交committed):从暂存区提交到版本库。

在这里插入图片描述

你可能感兴趣的:(#,Git,devops,git,github,ci/cd,版本控制)