git的一些關(guān)鍵理解

? ? 對于git的命令使用得雖多,但總是一知半解,知其然不知其所以然,要能夠深入的理解這些命令,必須得理解一些關(guān)鍵性的概念或者說是對象。正如要理解maven一樣,首先要理解pom(項目對象模型)這個概念。

首先要理解工作區(qū),暫存區(qū)以及版本庫這三個概念,你本地電腦上的一個git項目就是由這三個對象組成的。

工作區(qū)就是在硬盤中打開一個git項目的文件夾,你看到這個目錄下的所有文件及子目錄都是工作區(qū),你在這個目錄下使用任何方式(除了git 命令)操作文件,在git中都是對于工作區(qū)的操作。

版本庫其實也是你git項目目錄下的一個文件夾,不過它是一個隱藏的文件夾,具體細節(jié)不用太深究。這個版本庫就管理了這個git項目的各種歷史版本,這個git項目的各種不同版本的詳細信息都記錄在版本庫里面

暫存區(qū)也是項目下的一個隱藏文件夾,在邏輯上可以看作介于工作區(qū)和版本庫中間的一個區(qū)域,見名知意,它就是一個暫時保存更改的一個區(qū)域。

這個三個區(qū)域可以按照修改的頻繁度來排序,設(shè)計邏輯也可以這樣來理解。工作區(qū)是直接操作的區(qū)域,也就是頻繁修改的區(qū)域。每一次修改不可能都生成一個版本,但是有需要保存某些修改,所以可以把一些修改保存到暫存區(qū)。當暫存區(qū)累積了一些修改,需要把這些修改生成一個版本的時候,就把這些修改提交到版本庫,然后就在版本庫中生成了這個項目的一個新版本,包含了這次提交的修改。這就是本地git的一個簡單流程了。

理解了這三個對象之后,對git的很多命令的用法也就能夠理解了。比如git diff 命令:

git diff 是工作區(qū)與暫存區(qū)的差異比較

git diff --cached 是暫存區(qū)和版本庫中HEAD(版本庫的一個指針變量,指向某一次提交)指向的一個提交的版本比較

git diff HEAD 是工作區(qū)與版本庫HEAD指向的一個提交的版本比較

還有其他的git命令無非就是這三個區(qū)域的交互。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容