Git
Git是一个分布式版本控制系统,其是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Git 数据类型
-
repository
repository是文件的集合,通常包含一些特定项目相关的更改历史记录以及一个或多个包含代码或文档的文件
-
blob和tree
git中的任何类型的文件都是blob,目录是一个tree,一个tree由tree和blob组成,如下图所示:
-
commit
commit就类似对当前的repository做一个快照,其捕获完整的某个时间点的项目状态,repository的更改历史记录由不同时间点的commit组成。commit操作过程可以用下图来表示:
-
object
object在git中指的是blob、tree、commit,其所有object都有一个唯一地址,git通过该地址来区分object中存储的内容
git 操作类型
-
branch
branch通常指向一个特殊的commit,branch就好像电视剧中的多条故事线,其主线是main(或者master),我们从主线main(或master)中创建一个新的branch来添加某些功能或者错误,这样能够在不干扰主线的情况下试验代码。
-
merge
merge就是将一个branch的改动合并到另一个branch中。假如我们现在有这样的主线:
我们新建了一个branch,添加了一些代码以及修复了一些bug:
使用merge,能将branch1的改动合并到主线中去,这样主线就会出现merge后的commit,也就是相当于新的版本:
-
clone
clone会创建一个远程的repository的文件的副本并保存在自己本地的计算机上,在clone的时候,不仅会下载一些文件以及目录,还有从创建以来所有的更改记录,但是当我们clone之后的更新将不会自动同步到我们本地的计算机上
-
pull
pull的意思是将远程repository的更新同步到本地计算机上,因为在上面的clone讲了,在clone之后的更新将不会自动同步到我们本地的计算机上。
-
push
push的含义与pull相似,只不过其是将自己本地计算机上的更改同步到远程的repository中。
git 文件的生命循环
在git的repository内,文件通常有两种状态:已跟踪的和未跟踪的,已跟踪的就是git知道的,未跟踪的就是git不知道的。已跟踪的文件又有三种状态:未更改的、已更改的以及缓存的。
当创建了一个新的文件在git的repository内,其刚开始是未跟踪状态,我们需要让git知道它的存在,需要使用add指令加入到repository中,add指令会将其放在缓冲区。
在我们需要去对文件进行修改的时候,我们需要创建一个commit,刚创建的时候,其所有文件都是未修改的:
现在我们对文件做一些编辑与修改,此时文件处于被修改状态,但是其还未缓存,git知道其已经被更改,但是这些更改还未提交到repository中:
可以使用add指令,将这些更改的文件提交到缓存区:
协作工作流程
首先我们会拥有一个自己的工作目录,我们在工作目录里做一些编辑之后,按前面说的,先将文件add到缓冲区,再将其commit到自己的本地仓库,再接着使用push指令,将其变动同步到远程仓库,同样也可以使用pull指令,将远程仓库的变动同步到自己的仓库。
分布式工作流程
分布式其实就是多个成员对同一个远程仓库进行上述工作流程如图所示:
标签:文件,git,repository,更改,介绍,Git,branch,commit,图文 From: https://www.cnblogs.com/mjyrise/p/17787648.html