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中最重要的分支及其合併操作進行深入的分析。

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