Git物件概念詳解
如果學過物件導向的語言,那麼“物件”這個概念一定不會陌生,通常具有一些能完成指定功能的方法或者標識物件特徵的屬性。Git也具有物件,當然不能和麵向物件中的物件等同,它也有自身的特徵下面做一下介紹。
一.Git中物件型別:
(1).blob物件。
(2).tree物件。
(3).commit物件。
(4).tag物件。
二.blob物件:
此物件最為簡單,blob物件就是單純儲存資料,通常是文字內容。
假如有一個readme.txt檔案,那麼它就會形成一個blob物件。
當前向readme.txt文件寫入"螞蟻部落",並計算出它的sha-1值,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ echo "螞蟻部落" | git hash-object -w --stdin
程式碼執行效果截圖如下:
下面我們想要檢視這個blob物件的內容,可以使用如下命令:
[Shell] 純文字檢視 複製程式碼$ git show 210a3e
程式碼執行效果截圖如下:
也可以使用純純的linux命令,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ cat readme.txt
程式碼執行效果截圖如下:
特別說明:
(1).物件blob物件,Git只關注內容,在一個倉庫中,如果具有同樣的資料內容,那麼將會同享一個檔案。
(2).即便檔名稱不相同,Git也毫不在意,只關心資料內容,當然Git有自己的方式去區分檔名的不同。
三.Tree物件:
Tree物件如果翻譯成漢語那就是樹物件。
在工作中,大家對樹形導航或樹形性選單很熟悉,它們體現了一個層級結構。
Git中的Tree物件也是如此,圖示如下:
Tree物件的形成是由目錄層級結構關係的,一個目錄中可以包含子目錄,也可以包含普通檔案。
一個目錄對應著一個Tree物件,總結如下:
(1).目錄對應著Tree物件。
(2).Tree物件可以指向其他Tree物件或者Blob物件。
(3).Tree物件也是用sha-1值唯一標識。
四.commit提交物件:
對於commit物件就比較熟悉了,進行一次commit提交就生成一個commit物件。
程式碼例項如下:
[Shell] 純文字檢視 複製程式碼$ git commit -m "c1"
當我們檢視提交歷史的時候會看到更多的資訊,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git log
程式碼執行效果截圖如下:
可以看到一個commit提交物件具有的更多資訊,圖示如下:
總結如下:
(1).一個commit指向一個tree物件。
(2).提交是一步一步推進,除了第一個commit都有parent父提交,如果是合併的提交,它有多個父提交。
(3).具有其他一些提交資訊,比如作者,提交時間後者提交者等。
五.標籤物件:
標籤物件基本原理和commit,也具有一些相關提交資訊(當然不可能和commit提交一樣,只能說類似,比如標籤物件沒有父標籤等)。這裡不多介紹,具體參閱Git tag標籤用法詳解一章節。
相關文章
- 『現學現忘』Git物件 — 16、Tree物件詳解Git物件
- 『現學現忘』Git物件 — 15、blob物件詳解Git物件
- Git 的核心概念解讀Git
- git概念與指令講解Git
- Git詳解Git
- RabbitMQ概念詳解MQ
- git使用詳解Git
- Git詳解之一:Git起步Git
- Git詳解之三:Git分支Git
- Git詳解之六:Git工具Git
- SSDT表概念詳解
- git rebase vs git merge詳解Git
- Git詳解之五:分散式GitGit分散式
- Git詳解之七:自定義GitGit
- Git詳解之二:Git基礎Git
- git ssh配置詳解Git
- git status命令詳解Git
- git init命令詳解Git
- Git Reference引用詳解Git
- git stash用法詳解Git
- git checkout命令詳解Git
- Git HEAD詳解Git
- git remote 命令詳解GitREM
- git rebase --onto詳解Git
- git rebase 使用詳解Git
- git archive命令詳解GitHive
- Git 命令大全,詳解!Git
- git checkout 命令詳解Git
- CSSStyleSheet 物件詳解CSS物件
- File 物件詳解物件
- Docker基本概念詳解Docker
- js 變數概念詳解JS變數
- 【DG】DG概念原理詳解
- Git詳解之九:Git內部原理Git
- git add命令詳解Git
- git fetch & pull詳解Git
- git diff --stat命令詳解Git
- Git協作流程詳解Git