git show檢視tag 你真的懂git 嗎

2021-10-18 16:55:40 字數 2493 閱讀 3962

git 儲存目錄結構介紹git 是如何儲存的git 的物件

git 儲存目錄結構介紹首先我們先從 git 儲存目錄說起,通過 git init 建立乙個空的 git 倉庫,具體操作如下圖:

建立完成後進入 .git 目錄,如下圖所示:

hooks 該目錄用於配置 客戶端執提交操作用於觸發服務端的指令碼配置,一般用於自動化部署使用

info 該目錄用於配置一些不希望被 git 管控的檔案。

objects 該目錄用於儲存所有資料物件內容,這些資料內容型別有 commit tree blob tag

refs 該目錄用於儲存 git 本地以及遠端分支的引用,當然還有一種特殊的引用標籤引用

config 該檔案包含專案特有的配置選項,並且該配置僅對該 git 倉庫有效

description 該檔案僅供 gitweb 程式使用

head 該檔案表示當前 git 倉庫處於哪個分支

index 該檔案儲存暫存區資訊 (空倉庫下該檔案不會顯示一旦執行 git add 操作該檔案就會出現)

通過 git config --local 檢視 config 檔案的變化

我們通過 git config --local 配置僅對於 gitlearn 專案有效,使用者名稱和郵箱配置如下圖所示:

檢視 config 檔案,會發現該檔案新增使用者資訊配置。

git 是乙個內容定址檔案系統 其核心部分是乙個簡單的鍵值對資料庫(key-value data store)。 你可以向該資料庫插入任意型別的內容,它會返回乙個 40 位字串鍵,通過該 40 位字串鍵可以在任意時刻再次檢索(retrieve)該內容。

每次我們進行提交會通過 sha-1 演算法生成乙個長度為 40 個字元的校驗和(checksum hash)(也就是我們的 key)然後根據校驗和去獲取我們檔案的內容。這種通過唯一標識的 key(也可以理解為內容的位址)去獲取我們的內容的操作就是內容定址。

在 git 中有四種物件分別為:

blob 是具體的檔案物件

tree 是某個時刻提交目錄的內容

commit 執行一次 commit 就會產生乙個 commit 物件

tag 可以理解成 commit 的別名,乙個 tag 對應乙個 commit

了解 git 的物件需要使用如下命令進行檢視:

git cat-file -p 物件 hash 值 檢視物件的內容

git cat-file -t 物件 hash值 檢視物件的型別

git ls-files --stage 檢視 index 檔案內容

git hash-object 檢視檔案的 hash 值

檢視 commit tree blob 三個物件演示

我們建立乙個 first.txt 檔案,並將其提交到暫存區中。

進入 .git 資料夾下會發現新增了乙個 index 檔案。

我們可以通過 git ls-files --stage 檢視 index 檔案的內容。

進入 objects 目錄發現 9c 資料夾名稱+檔名稱 和 index 檔案中的一段字串內容相同。

我們通過 git cat-file -t 9c59e24b8393179a5d712de4f990178df5734d99 我檢視該表示物件型別 如下圖所示表示該標識物件型別是 blob。

執行 git commit -m 將 first.txt 檔案提交到本地倉庫中。

執行 git log 檢視我們的提交記錄。

如下圖所示我們通過 git cat-file -p commitid 檢視我們提交的內容。如下圖所示:我們最新一次提交包含了乙個 59b06 開頭的 tree 物件。

在 ./git/objects 目錄中可以找到我們對應的檔案。

我們通過 git cat-file -p tree物件雜湊值,檢視該 tree 物件的內容 。如下圖所示顯示就是我們 git add參生的 blob物件。

在通過 git cat-file -p blob物件雜湊值,檢視我們 blob物件內容,如下圖所示 blob物件 內容就是我們 first.txt 檔案的內容。

我們將 first.txt 檔案提交到本地倉庫 會產生乙個 commit 乙個 tree 和乙個 blob 物件。

tag 物件原理演示

首先我們通過 git log 檢視最新的提交是 add a.txt 注釋的 commit 如下圖所示。

通過 git tag -a v1.1 -m 『add a.txt tag』 為該 commit 建立乙個附註標籤。

在我們的 .git/refs/tags/ 目錄下會新增 v1.1 檔案。

v1.1 內容如下:

看到這個你肯定想到了這是乙個 git 物件,我們通過 git cat-file -t 檢視這個雜湊值物件型別。如下圖所示它是乙個 tag。

然後通過 git cat-file -p 檢視它的內容,如下圖所示,該tag包含了commit 物件和 標註的資訊。

Harbor 搜尋映象及檢視 tag

在我們搭建完 harbor 後 cat get images.sh bin bash user admin pass harbor12345 hurl rtoken curl k s u service token?account service harbor registry scope regi...

你真的會用strong weak dance嗎?

下文的討論基於arc 平時開發中我們遇到block裡面引用self的情況,大部分都是這樣處理的 weak typeof self weakself self self.myblock 複製 我們習慣了這樣用,貌似這樣用了之後可以解決迴圈引用的問題,而且可以保證block執行之前self不會被釋放掉?...

如果你真的想做

如果真的大家要學到東西,就不要各自為戰,從乙個完整的專案開始,1.專案策化開始 專案的目的,使用者群,市場定位,同類產品中的定位等等,現在發展系統很多,沒有好的定位,有什麼用呀 2.需求開發 到底有那些需求,不要以為新聞發布系統就簡單,否則只是重複勞動,我認為從最最簡單的新聞系統入手,不斷完善這個提...