# 引言
你將花費你生命中的若干小時來閱讀有關 Git 的相關內容。讓我們用幾分鐘時間來介紹下我們將給你講解的內容。下面是本書正文十章和附錄三章的快速總結。
在**第一章**,我們將介紹版本控制系統(VCSs)和 Git 的基本概念——不涉及技術內容,僅僅是什么是 Git,為什么它會成為 VCSs 大家庭中的一員,它與其它 VCSs 的區別,以及為什么那么多人都在使用 Git。然后,我們將介紹如何下載 Git 以及如果你的系統沒有安裝 Git,如何為第一次運行做準備。
在**第二章**,我們將闡述 Git 的基本使用——包含你在使用 Git 時可能遇到的 80% 的情形。通過閱讀本章,你應該能夠克隆倉庫、查看項目歷史、修改文件和貢獻更改。如果本書在此刻自燃,你應該已經能夠使用已經學到的漂亮有用的 Git 知識獲取到另外一份拷貝。
**第三章**關注于 Git 的分支模型。分支模型通常被認為是 Git 的殺手級特性。這里,你將學習到究竟是什么讓 Git與眾不同。學習完本章,你可能需要一段時間來思考,在 Git 分支成為你的生活的一部分之前,你到底是如何生活的。
**第三章**關注于服務器端的 Git。本章面向那些希望在你自己的組織或個人服務器搭建用于合作的 Git 的讀者。如果你希望讓別人處理這些事務,我們也會探討一些托管選項。
**第五章**將闡述多種分布式工作流的細節,以及如何使用 Git 實現它們。學習完本章,你應該能夠在多個遠程倉庫之間游刃有余,通過電子郵件使用 Git,熟練地處理多個遠程分支和合作者貢獻的補丁。
**第六章**介紹 GitHub 托管服務以及深層次的工具。我們將涵蓋注冊與賬戶管理,創建和使用 Git 倉庫,貢獻項目的普通工作流以及接受他人的貢獻,GitHub 的可編程接口和那些能夠讓你的生活變得更簡單的小技巧。
**第七章**關于 Git 的高級命令。你將學習到一些高級主題,諸如掌握可怕的“reset”命令,使用二分搜索識別錯誤,編輯歷史,細節版本選擇等等。本章的介紹將豐富你的 Git 知識,讓你成為一個真正的大師。
**第八章**關于 Git 環境的自定義配置,包括設置用于增強或促進自定義策略的鉤子腳本以及按照你所需要的方式進行工作的環境配置。我們還會介紹構建你自己的腳本集,以增強自定義提交策略。
**第九章**對比 Git 和其它 VCSs,包括在 Subversion(SVN)的世界使用 Git 以及從其它 VCSs 遷移到 Git。很多組織仍在使用 SVN,并且也沒有計劃改變,此時,你將了解到 Git 不可思議的能力——本章將展示,在你不得不使用 SVN 服務器的時候如何協同合作。我們還將介紹如何從不同系統導入項目,以便你能夠全身心投入 Git 的懷抱。
**第十章**深入 Git 陰暗而漂亮的實現細節。現在,你已經知道所有有關 Git 的知識,能夠熟練運用 Git 的強大優雅的功能。接下來,你可以繼續學習 Git 如何存儲對象、Git 的對象模型是怎樣的、打包文件的細節、服務器協議等更多知識。本書自始至終都將引用本章的內容,以便你能夠在當時就可以深入了解。但是,如果你像我們一樣希望深入學習技術細節,你可能想先閱讀第十章。我們將選擇權交給你。
在**附錄 A**,我們學習多個在特定環境中使用 Git 的實例。我們涵蓋多個你可能會使用 Git 的多個 GUI 和 IDE 編程環境,這些都可以由你自己選擇。如果你想在 shell、Visual Studio 或 Eclipse 中使用 Git,請閱讀本章。
在**附錄 B**,我們探討通過類似 libgit2 和 JGit 的工具編寫 Git 腳本、擴展 Git。如果你對編寫復雜、快速的自定義工具感興趣,需要了解 Git 的底層訪問,本章就是你所需要了解的。
最后在**附錄 C**,我們一次性瀏覽 Git 的所有主要命令,復習在本書中介紹的內容,回憶我們能夠使用這些命令做什么。如果你需要知道本書中我們使用了哪些特定 Git 命令,你可以在這里查閱。
下面讓我們開始。
- 前言
- Scott Chacon 序
- Ben Straub 序
- 獻辭
- 貢獻者
- 引言
- 1. 起步
- 1.1 關于版本控制
- 1.2 Git 簡史
- 1.3 Git 基礎
- 1.4 命令行
- 1.5 安裝 Git
- 1.6 初次運行 Git 前的配置
- 1.7 獲取幫助
- 1.8 總結
- 2. Git 基礎
- 2.1 獲取 Git 倉庫
- 2.2 記錄每次更新到倉庫
- 2.3 查看提交歷史
- 2.4 撤消操作
- 2.5 遠程倉庫的使用
- 2.6 打標簽
- 2.7 Git 別名
- 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 Git 守護進程
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管的選擇
- 4.10 總結
- 5. 分布式 Git
- 5.1 分布式工作流程
- 5.2 向一個項目貢獻
- 5.3 維護項目
- 5.4 總結
- 6. GitHub
- 6.1 賬戶的創建和配置
- 6.2 對項目做出貢獻
- 6.3 維護項目
- 6.4 管理組織
- 6.5 腳本 GitHub
- 6.6 總結
- 7. Git 工具
- 7.1 選擇修訂版本
- 7.2 交互式暫存
- 7.3 儲藏與清理
- 7.4 簽署工作
- 7.5 搜索
- 7.6 重寫歷史
- 7.7 重置揭密
- 7.8 高級合并
- 7.9 Rerere
- 7.10 使用 Git 調試
- 7.11 子模塊
- 7.12 打包
- 7.13 替換
- 7.14 憑證存儲
- 7.15 總結
- 8. 自定義 Git
- 8.1 配置 Git
- 8.2 Git 屬性
- 8.3 Git 鉤子
- 8.4 使用強制策略的一個例子
- 8.5 總結
- 9. Git 與其他系統
- 9.1 作為客戶端的 Git
- 9.2 遷移到 Git
- 9.3 總結
- 10. Git 內部原理
- 10.1 底層命令和高層命令
- 10.2 Git 對象
- 10.3 Git 引用
- 10.4 包文件
- 10.5 引用規格
- 10.6 傳輸協議
- 10.7 維護與數據恢復
- 10.8 環境變量
- 10.9 總結
- A. 其它環境中的 Git
- A1.1 圖形界面
- A1.2 Visual Studio 中的 Git
- A1.3 Eclipse 中的 Git
- A1.4 Bash 中的 Git
- A1.5 Zsh 中的 Git
- A1.6 Powershell 中的 Git
- A1.7 總結
- B. 將 Git 嵌入你的應用
- A2.1 命令行 Git 方式
- A2.2 Libgit2
- A2.3 JGit
- C. Git 命令
- A3.1 設置與配置
- A3.2 獲取與創建項目
- A3.3 快照基礎
- A3.4 分支與合并
- A3.5 項目分享與更新
- A3.6 檢查與比較
- A3.7 調試
- A3.8 補丁
- A3.9 郵件
- A3.10 外部系統
- A3.11 管理
- A3.12 底層命令