10.1 底層命令和高層命令

2018-02-24 15:22 更新

底層命令和高層命令

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號