git版本控制的原理是什么?git版本控制的原理讲解

阳光 2022-06-10 20:45:25 java常见问答 9193

Git是一个很好的版本管理的工具,它使用起来非常方便,可以进行的代码管理,也可以列出分支或者删除分支等操作,那git版本控制的原理是什么?接下来我们就来给大家讲解一下这方面的内容。

git版本控制的原理.jpg

因为 Git 是一个分布式版本控制系统,因此 Git 的操作大部分都是在本地的,除非明确说明,下面的原理或命令都是本地操作。

每个 Git 项目的根目录下有一个 .git 目录,它是 Git 默默进行版本控制时读写的“数据库”。有几个概念需要提一下:

工作区:代码所在目录;

暂存区: .git/index 文件;

本地仓库: .git 目录;

一个典型的工作流程如下图,绿色部分为工作区(Working Directory),对它进行任何修改(包括:新建文件、删除文件、文件重命名等)都和单纯的修改文件一样,不会涉及到版本控制。

只有当你把工作区的修改提交(commit)到仓库(.git 目录)中,Git 才会真正的进行版本控制。

git版本控制的原理是什么?git版本控制的原理讲解.png

暂存区是一个包含文件索引的目录树(.git/index 文件),记录了文件的元数据(文件名、文件长度、修改时间等),而文件内容则存放在 .git/objects 目录下。

用 Git 进行版本控制,实际上就是在工作区、暂存区、仓库三个地方进行文件信息的记录。

1.png

Git 将提交(commit)、文件、目录统统视为对象。对象以 SHA1 值作为指纹,与其他对象相区分。Git 命令操作的最小单位是对象。 Git 会将文件的副本存放在 .git 文件夹下,每个文件都根据文件内容进行操作。以下图为例:

1. 98ca9 对象是一次提交,它记录了本次提交的元信息以及 92ec2 树对象;

2. 92ec2 树对象记录了文件名和对象的印射关系;

3. 本次提交修改的三个文件一一对应了一个对象;

2.jpg

Git 项目的文件始终在四种状态之间迁移,如下图所示:

3.png

如果是新文件,典型的操作流程如下:

创建一个新文件 foo.txt,此时它处于未跟踪(Untracked)的状态,未被 Git 进行版本控制;

4.jpg

通过 add 命令将它纳入 Git 管理,此时 foo.txt 变为已暂存(Staged)状态;

5.jpg

提交此次操作,foo.txt 转变为未修改(Unmodified)状态;

6.jpg

如果是修改文件,典型的操作流程如下:

修改 foo.txt 文件,它转变为已修改(Modified)状态;

7.jpg

通过 add 命令将它的修改记录到暂存区,为已暂存(Staged)状态;

8.jpg

提交此次操作,foo.txt 转变为未修改(Unmodified)状态;

9.jpg

如果是删除文件,典型的操作流程如下:

删除 foo.txt 文件,它转变为已修改(Modified)状态;

10.jpg

通过 add 命令将操作记录到暂存区,为已暂存(Staged)状态;

11.jpg

提交此次操作,foo.txt 转变为未修改(Unmodified)状态(文件历史版本依然在 .git 中被记录着);

12.jpg

Git是一个版本控制系统,能够用于敏捷高效地处理任何或小或大的项目,所以我们只有掌握Git版本控制的原理,才能更好的使用git!最后大家如果想要了解更多其他工具教程知识,敬请关注奇Q工具网。

推荐阅读:

Java工程师怎么升高级?Java高级工程师发展路径是什么?

java工程师怎么区分考级?java工程师不同等级要掌握哪些知识?

java内存泄漏如何排查?什么原因造成内存泄漏?