git(二)之工作使用流程

一、前言

上篇文章我们讲到对版本控制系统——svn以及git的区别及优点,对于git来说,每个执行过git clone的文件夹都是一个完整的仓库,也可以说是“容灾”了啊哈哈。

这次将提出我们当前git在工作中的整个使用流程,以及git文件夹的初探。

二、正文

作为当前git的工作流程,我决定分为(逻辑)流程和(物理)流程,这两个都是我自己起的名字,并不专业。只是对使用git 的逻辑以及实际流程做的一个概述。

逻辑流程

如下图所示:我们在执行的最开始,都只有一个远程仓库,在我们执行完git clone之后,便可以与远程建立起联系,并且还能创建文件夹以及复制代码,可见git clone操作是一个“复合”操作,那么git clone由哪几部分组成呢?

git clone =   mkdir foo  创建文件夹

                   cd foo         进入文件夹

                   git init         初始化git目录

                   git remote add origin REMOTEURL      添加远程仓库

                   git pull origin master     取代码

如上,在使用git clone之后,我们就与远程仓库建立了关系,就可以执行如上图所示的一些流程。

在我们做完clone之后,就可以在工作区进行操作了,对于在工作区中操作后的文件,使用git add加入暂存区stage;

在完成了一次完整的提交时,使用commit将当前所有暂存区中的差异文件提交至本地仓库,这就其实已经完成了一个本地仓库的完整的提交;

这时候我们想将当前的工作内容同步更新至远程,如果当时远程仓库已经被其他小伙伴更新过,就需要使用fetch,拿到远程仓库的更新,并且使用merge或 者rebase合并远程仓库的这些提交,最后将自己的本地仓库提交至远程,这个是我们整个的逻辑操作流程。

push规则:

为什么如果远程仓库被其他小伙伴提交过之后,就不允许我们直接提交,而是需要更新之后才能提交呢?这就涉及到了git的同步push操作的规则,即如果将本地的更新push至远程,需要遵循的规则是,本地必须要比远程的提交多才可以,也就是说发起主动push的一方,要比被push的一方的提交领先才可以。

物理流程

针对于物理流程(也是我自己起的名字啊),如下图所示:,在git init的时候,生成了本地仓库的版本库,我们每次的add以及commit都是在向里面增加文件以及提交记录。

这个就在主文件夹的.git目录下,打开这个目录,可以看到以下一大堆文件,分别有以下的作用:

hooks里面有git执行的部分脚本;

而logs中包含了所有的指针记录;

objects是生成的所有对象;

HEAD是当前工作目录的指向,也就是代表了当前工程的分支以及分支的提交点;

index是二进制文件形式存储的暂存区。

这个.git目录就是当前git仓库的所有数据,他也标志着我们操作系统中的git程序识别的唯一目录,因此如果想当前目录取消应用于git,直接删除即可。

三、结语

这篇博客主要总结了我们在工作中使用git 的整体流程,并中逻辑以及物理的两个角度进行了较为浅显的分析,下篇我们将对git中最重要的分支及其合并操作进行深入的分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章