10.1 底層命令和高層命令

2018-02-24 15:22 更新

底層命令和高層命令

本書(shū)旨在討論如何通過(guò)?checkout、branch、remote?等大約 30 個(gè)諸如此類(lèi)動(dòng)詞形式的命令來(lái)玩轉(zhuǎn) Git。 然而,由于 Git 最初是一套面向版本控制系統(tǒng)的工具集,而不是一個(gè)完整的、用戶(hù)友好的版本控制系統(tǒng),所以它還包含了一部分用于完成底層工作的命令。 這些命令被設(shè)計(jì)成能以 UNIX 命令行的風(fēng)格連接在一起,抑或藉由腳本調(diào)用,來(lái)完成工作。 這部分命令一般被稱(chēng)作“底層(plumbing)”命令,而那些更友好的命令則被稱(chēng)作“高層(porcelain)”命令。

本書(shū)前九章專(zhuān)注于探討高層命令。 然而在本章,我們將主要面對(duì)底層命令。 因?yàn)?,底層命令得以讓你窺探 Git 內(nèi)部的工作機(jī)制,也有助于說(shuō)明 Git 是如何完成工作的,以及它為何如此運(yùn)作。 多數(shù)底層命令并不面向最終用戶(hù):它們更適合作為新命令和自定義腳本的組成部分。

當(dāng)在一個(gè)新目錄或已有目錄執(zhí)行?git init?時(shí),Git 會(huì)創(chuàng)建一個(gè)?.git?目錄。 這個(gè)目錄包含了幾乎所有 Git 存儲(chǔ)和操作的對(duì)象。 如若想備份或復(fù)制一個(gè)版本庫(kù),只需把這個(gè)目錄拷貝至另一處即可。 本章探討的所有內(nèi)容,均位于這個(gè)目錄內(nèi)。 該目錄的結(jié)構(gòu)如下所示:

$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/

該目錄下可能還會(huì)包含其他文件,不過(guò)對(duì)于一個(gè)全新的?git init?版本庫(kù),這將是你看到的默認(rèn)結(jié)構(gòu)。?description?文件僅供 GitWeb 程序使用,我們無(wú)需關(guān)心。?config?文件包含項(xiàng)目特有的配置選項(xiàng)。?info?目錄包含一個(gè)全局性排除(global exclude)文件,用以放置那些不希望被記錄在 .gitignore 文件中的忽略模式(ignored patterns)。?hooks?目錄包含客戶(hù)端或服務(wù)端的鉤子腳本(hook scripts),在?Git 鉤子?中這部分話(huà)題已被詳細(xì)探討過(guò)。

剩下的四個(gè)條目很重要:HEAD?文件、(尚待創(chuàng)建的)index?文件,和?objects?目錄、refs目錄。 這些條目是 Git 的核心組成部分。?objects?目錄存儲(chǔ)所有數(shù)據(jù)內(nèi)容;refs?目錄存儲(chǔ)指向數(shù)據(jù)(分支)的提交對(duì)象的指針;HEAD?文件指示目前被檢出的分支;index?文件保存暫存區(qū)信息。 我們將詳細(xì)地逐一檢視這四部分,以期理解 Git 是如何運(yùn)轉(zhuǎn)的。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)