本書講解了使用` checkout, branch, remote` 等共約 30 個 Git 命令。然而由于 Git 一開始被設計成供 VCS 使用的工具集而不是一整套用戶友好的 VCS,它還包含了許多底層命令,這些命令用于以 UNIX 風格使用或由腳本調用。這些命令一般被稱為 "plumbing" 命令(底層命令),其他的更友好的命令則被稱為 "porcelain" 命令(高層命令)。
本書前八章主要專門討論高層命令。本章將主要討論底層命令以理解 Git 的內部工作機制、演示 Git 如何及為何要以這種方式工作。這些命令主要不是用來從命令行手工使用的,更多的是用來為其他工具和自定義腳本服務的。
當你在一個新目錄或已有目錄內執行 `git init` 時,`Git `會創建一個 .git 目錄,幾乎所有 Git 存儲和操作的內容都位于該目錄下。如果你要備份或復制一個庫,基本上將這一目錄拷貝至其他地方就可以了。本章基本上都討論該目錄下的內容。該目錄結構如下:
~~~
$ ls
HEAD
branches/
config
description
hooks/
index
info/
objects/
refs/
~~~
該目錄下有可能還有其他文件,但這是一個全新的` git init `生成的庫,所以默認情況下這些就是你能看到的結構。新版本的 Git 不再使用 branches 目錄,`description` 文件僅供 `GitWeb` 程序使用,所以不用關心這些內容。config 文件包含了項目特有的配置選項,info 目錄保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可執行文件。hooks 目錄保存了第七章詳細介紹了的客戶端或服務端鉤子腳本。
另外還有四個重要的文件或目錄:`HEAD `及 `index` 文件,`objects `及 refs 目錄。這些是 Git 的核心部分。`objects` 目錄存儲所有數據內容,`refs` 目錄存儲指向數據 (分支) 的提交對象的指針,HEAD 文件指向當前分支,index 文件保存了暫存區域信息。馬上你將詳細了解 Git 是如何操縱這些內容的。
- 1. 起步
- 1.1 關于版本控制
- 1.2 Git 簡史
- 1.3 Git 基礎
- 1.4 安裝 Git
- 1.5 初次運行 Git 前的配置
- 1.6 獲取幫助
- 1.7 小結
- 2. Git基礎
- 2.1 取得項目的 Git 倉庫
- 2.2 記錄每次更新到倉庫
- 2.3 查看提交歷史
- 2.4 撤消操作
- 2.5 遠程倉庫的使用
- 2.6 打標簽
- 2.7 技巧和竅門
- 2.8 小結
- 3. Git分支
- 3.1 何謂分支
- 3.2 分支的新建與合并
- 3.3 分支的管理
- 3.4 利用分支進行開發的工作流程
- 3.5 遠程分支
- 3.6 分支的衍合
- 3.7 小結
- 4. 服務器上的Git
- 4.1 協議
- 4.2 在服務器上部署 Git
- 4.3 生成 SSH 公鑰
- 4.4 架設服務器
- 4.5 公共訪問
- 4.6 GitWeb
- 4.7 Gitosis
- 4.8 Gitolite
- 4.9 Git 守護進程
- 4.10 Git 托管服務
- 4.11 小結
- 5. 分布式Git
- 5.1 分布式工作流程
- 5.2 為項目作貢獻
- 5.3 項目的管理
- 5.4 小結
- 6. Git工具
- 6.1 修訂版本(Revision)選擇
- 6.2 交互式暫存
- 6.3 儲藏(Stashing)
- 6.4 重寫歷史
- 6.5 使用 Git 調試
- 6.6 子模塊
- 6.7 子樹合并
- 6.8 總結
- 7. 自定義Git
- 7.1 配置 Git
- 7.2 Git屬性
- 7.3 Git掛鉤
- 7.4 Git 強制策略實例
- 7.5 總結
- 8. Git與其他系統
- 8.1 Git 與 Subversion
- 8.2 遷移到 Git
- 8.3 總結
- 9. Git 內部原理
- 9.2 Git 對象
- 9.3 Git References
- 9.4 Packfiles
- 9.5 The Refspec
- 9.6 傳輸協議
- 9.7 維護及數據恢復
- 9.8 總結
- 9.1 底層命令 (Plumbing) 和高層命令 (Porcelain)