git最讓你迷惑的無非是它裡面的各種概念了,如果是剛開始接觸git希望看完本篇介紹之後有乙個清晰的認識,筆者認識也有限這裡只說說個人對使用git的感受,說一下它裡面的幾個最常用的概念的理解。
在初始化git版本庫之後會生成乙個隱藏的檔案 .git ,可以將該檔案理解為git的版本庫 repository,而我們自己建立的專案資料夾即工作區 working directory ,在.git 資料夾裡面還有很多檔案,其中有乙個index 檔案 就是暫存區也可以叫做 stage ,git還為我們自動生成了乙個分支master以及指向該分支的指標head ,如下圖
從圖中可以看出來respository包括分支master和stage, working diretory 可以理解為我們開啟開發環境如eclipse,裡面的內容即工作區的內容,在工作區裡面有的**以及配置檔案等我們需要提交到版本庫裡面,最終是到了分支master上面,暫存區只是乙個臨時儲存修改檔案的地方。
平時我們使用的命令git add file1 是把檔案從工作區提交到暫存區,git commit -m "prompty" file1 是把檔案從暫存區提交到了分支master下面,這裡因為只有乙個分支master,就提交到master上了,下面讓我們再來結合具體例子來說明一下。
我們修改一下tgb.txt檔案增加一行 "l love you" ,並新建乙個檔案 test1.txt,現在還沒有執行git add命令,這種修改都還停留在工作區內,用git status檢視狀態,如圖
上圖表明修改並沒有在暫存區裡面,當我們執行git add test1.txt ,git add tgb.txt後,再來看一下狀態
這兩個檔案被新增到了暫存區,但是還沒有提交,當執行git commit -m "tijiao" 後檔案即從暫存區到了master分支上面,如圖將看不到暫存區裡面有什麼內容。
git管理的是新增到暫存區裡面的修改,包括增刪改等等都算是可以跟蹤的檔案變動,也可以說git只管理我們變動的部分變動的我們才往暫存區提交,這也是git比其他版本系統設計優秀的一點,以後,會詳細說一下各個版本系統管理檔案是如何管理的,他們的設計思想是什麼。
下面還有乙個需要注意的git diff 命令的差異:
git diff 比較的是工作區和暫存區的差別
git diff --cached 比較的是暫存區和版本庫的差別
git diff head 可以檢視工作區和版本庫的差別
通過乙個新增檔案既可以明顯看出他們之間區別,不過這裡有乙個前提是已經提交到暫存區的檔案修改的時候才可以看出明顯區別,這也是以為啥git只能跟著提交到暫存區的檔案,如果只是在工作區新建乙個檔案,那麼輸入這三個命令都沒有結果為空白。
我們繼續修改tgb.txt,在檔案末尾新增 we are good boy.
分別輸入三個命令,效果為:
從圖中可以看出,工作區與暫存區、工作區與版本庫都有變化,而版本庫與暫存區並沒有變化。進一步執行git add tgb.txt
執行git add tgb.txt之後發現git diff沒有輸出內容,表明工作區與暫存區已經同步,暫存區與版本庫、版本庫與工作區沒有同步。最後一步執行git commit
當執行完git commit後,三個命令都沒有輸出結果,表明我們修改的檔案已經被同步的版本庫,已經被版本庫管理起來了。
版本庫管理檔案會很方便尤其是**,等好多的命令熟了之後也會覺得並不是那麼難用,主要使用的時候覺得git反應比較快,而且速度還可以,現在很多人都在window開發而喜歡具有介面的版本工具軟體,而不去學習git命令,學習一些git 命令還是很有用的,假如讓你去linux上面開發或者在linux系統上面管理**,你就會完全束手無策不懂原理也不懂命令,需要從新學習從新認識git。
可以說各種命令是git的根本,學習了命令無論哪乙個介面管理工作一看也就會了,現在有好多的git視覺化工具,不如學幾個命令,況且再多的介面底層也是呼叫這麼多的命令來實現的,有了介面就讓我們變懶了,降低了開發者的水平,提高開發效率的同時也失去了更多的學習、研究機會。
Git 工作區 暫存區 版本庫
工作區 我們會想當然的認為,當前倉庫所在目錄就是我們的工作區,其實這是不完全正確的。在當前倉庫中,新增,更改,刪除檔案這些動作,都發生在工作區裡面。暫存區 英文叫stage,或index。在版本庫.git 目錄下,有乙個index檔案。它實際上就是乙個包含檔案索引的目錄樹,像是乙個虛擬的工作區。在這...
Git 工作區 版本庫 暫存區
tags git 參考部落格 工作區 電腦裡能看到的目錄,就是我們建立的 learngit 資料夾。版本庫 工作區里有乙個隱藏的 git 目錄,這個就是 git 的版本庫。git 的版本庫里存了很多東西,其中最重要的就是稱為 stage 的暫存區,還有 git 為我們自動建立的第乙個分支 maste...
git 工作區 暫存區 版本庫
工作區 working directory 就是你在電腦裡能看到的目錄 版本庫 repository 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。暫存區 git的版本庫里存了很多東西,其中最重要的就是稱為stage 或者叫index 的暫存區,還有git為我們自動建立的第乙個分...