GIT基本概念

2021-07-23 15:29:45 字數 1749 閱讀 2069

工作區是個工作目錄,實質上就是我們的在開發過程中對其進行新增、編輯的源**。包括標頭檔案、原始檔和配置檔案

在工作區中有乙個隱藏檔案 .git ,它不屬於工作區,而是git版本庫。該檔案下包括很多其他檔案,

其中重要的是暫存區(.git/index)、物件庫(.git/objects)、分支(master分支和其他分支)、指向master的指標head。

在版本庫.git目錄下,有乙個index檔案,這個檔案就是暫存區。它實際上就是乙個包含檔案索引的目錄樹,像是乙個虛擬的工作區。在這個虛擬工作區的目錄樹中,記錄了檔名、檔案的狀態資訊(時間戳、檔案長度等),檔案的內容並不儲存其中,而是儲存在git物件庫(.git/objects)中,檔案索引建立了檔案和物件庫中物件實體之間的對應。如果當前倉庫,有檔案更新,並且使用git add 命令,那麼這些更新就會出現在暫存區中。

當對工作區修改或新增的檔案執行 "git add" 命令時,暫存區的目錄樹被更新,同時工作區修改或新增的檔案內容被寫入到物件庫中的乙個新的物件中,而該物件的id 被記錄在暫存區的檔案索引中。

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

1.git checkout -- filename(撤銷工作區)

該命令用於把名為」filename「的檔案在工作區的修改全部撤銷。

這裡有兩種情況:

一種是檔案自修改後還沒有被放到暫存區,撤銷修改後,檔案就回到和版本庫一模一樣的狀態;

另一種是檔案已經新增到暫存區後,又作了修改,撤銷修改後,檔案就回到新增到暫存區後的狀態。

暫存區中依然保留修改的內容

總之, 這個命令是以最新的儲存時間節點(add和commit)為參照(因為git只能track added和committed的檔案),覆蓋工作區對應的檔案;
2.git checkout head .和git checkout head filename(撤銷工作區和暫存區)

該命令用於撤銷

工作區中未新增(add)的修改和暫存區中未提交(commit)的修改。

1.git reset head filename(撤銷暫存區的修改)

該命令用於把暫存區的修改撤銷掉(unstage),工作區不受影響。

2.git reset -- hard commit-id(版本回退)

該命令用於版本回退,可以將工作區內容回退到「commit-id」代表的版本並清空暫存區。

回退前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。

要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。

特別的,head代表當前版本,head^代表上一版本,head^(n)代表上n個版本。

1、git checkout -- filename ------ 撤銷工作區

2、git reset head filename ------ 撤銷暫存區但不撤銷工作區

3、git 

checkout head filename ------ 撤銷工作區和暫存區(可以理解為1+2)

4、git reset -- hard commit-id ------ 將工作區回退到commit-id代表的版本

git 基本概念

理解git首先要對它自己的主要概念理解清楚,這個我看了一邊後又重新梳理了一邊思路,提取了幾個自己很容易誤解和難區分的概念,在這裡詳細介紹下 工作區 就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區。暫存區 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。gi...

git基本概念

為了便於管理,git要求每個遠端主機都必須指定乙個主機名。git remote命令就用於管理主機名。不帶選項的時候,git remote命令列出所有遠端主機。一旦遠端主機的版本庫有了更新 git術語叫做commit 需要將這些更新取回本地,這時就要用到git fetch命令。預設情況下,git fe...

git 基本概念

git 引用 版本庫中檔案三種狀態 已修改 modified 已暫存 stagged 已提交 committed 三大工作區 工作目錄 暫存區和版本庫 倉庫 工作區下的檔案狀態 未被追蹤 untracked 被追蹤 tracked git存放的是版本資訊 git目錄 說明倉庫子目錄 功能描述 bra...