首頁 php教程 PHP开发 Git 教程之工作區、暫存區及版本庫詳解

Git 教程之工作區、暫存區及版本庫詳解

Dec 16, 2016 pm 02:48 PM

Git 工作區、暫存區和版本庫

基本概念

我們先來理解下Git 工作區、暫存區和版本庫概念

工作區:就是你在電腦裡能看到的目錄。
暫存區:英文叫stage, 或index。一般存放在"git目錄"下的index檔(.git/index)中,所以我們把暫存區有時也叫作索引(index)。
版本庫:工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。

下面這個圖展示了工作區、版本庫中的暫存區和版本庫之間的關係:

Git 教程之工作區、暫存區及版本庫詳解

圖中左側為工作區,右側為版本庫。在版本庫中標記為 "index" 的區域是暫存區(stage, index),標記為 "master" 的是 master 分支所代表的目錄樹。

圖中我們可以看出此時 "HEAD" 實際上是指向 master 分支的一個"遊標"。所以圖示的命令中出現 HEAD 的地方可以用 master 來替換。

圖中的 objects 標識的區域為 Git 的物件庫,實際位於 ".git/objects" 目錄下,裡麵包含了創建的各種物件及內容。
當對工作區修改(或新增)的檔案執行 "git add" 指令時,暫存區的目錄樹被更新,同時工作區修改(或新增)的檔案內容被寫入到物件庫中的一個新的物件中,而該物件的ID被記錄在暫存區的文件索引中。

當執行提交操作(git commit)時,暫存區的目錄樹寫到版本庫(物件庫)中,master 分支會做對應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹。

當執行 "git reset HEAD" 指令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。

當執行 "git rm --cached " 指令時,會直接從暫存區刪除文件,工作區則不做出改變。

當執行 "git checkout ." 或 "git checkout -- " 指令時,會以暫存區全部或指定的檔案取代工作區的檔案。這個操作很危險,會清除工作區中未加入暫存區的變更。

當執行 "git checkout HEAD ." 或 "git checkout HEAD " 指令時,會用 HEAD 指向的 master 分支中的全部或部分檔案取代暫存區和以及工作區中的檔案。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。

 以上就是Git 教程之工作區、暫存區和版本庫詳解的內容,更多相關文章請關注PHP中文網(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)