《Git學習指南》是2020年2月人民郵電出版社出版的圖書,作者是德 René Preiel普萊貝爾、Bjrn Stachmann斯拉赫曼。
基本介紹
- 中文名:Git學習指南
- 作者:普萊貝爾、斯拉赫曼
- 出版社:人民郵電出版社
- 出版時間:2020年2月
- 頁數:212 頁
- 定價:49 元
- 開本:16 開
- 裝幀:平裝
- ISBN:9787115436764
內容簡介,圖書目錄,
內容簡介
Git是一 款免費、開源的分散式版本控制系統,也是當今流行的版本控制系統之一,在眾多的項目開發中普遍使用,得到程式設計師和工程師的歡迎和喜愛。
本書是一本面向專業開發 者的圖書。全書內容分為26章,從基礎概念講起,陸續向讀者介紹了有關Git的各種操作和使用技巧,不僅將提交、版本庫、分支、合併等命令講解到位,還介紹了工作流、基於分支的開發、二分法排錯、發行版交付、項目的拆分與合併、項目的遷移等內容。
本書適合從事項目開發的專業人士閱讀,想要學習Git的讀者也可以選用。
圖書目錄
第 1章 基本概念 1
1.1 分散式版本控制,有何過人之處 1
1.2 版本庫,分散式工作的基礎所在 3
1.3 分支的創建與合併很簡單 5
1.4 本章小結 6
第 2章 入門 8
2.1 準備Git環境 8
2.2 第 一個Git項目 8
2.2.1 創建版本庫 9
2.2.2 首 次提交 9
2.2.3 檢查狀態 10
2.2.4 提交修改 11
2.2.5 顯示歷史 11
2.3 Git的協作功能 12
2.3.1 克隆版本庫 12
2.3.2 從另一版本庫中獲取修改 12
2.3.3 從任意版本庫中取回修改 14
2.3.4 創建共享版本庫 14
2.3.5 用push命令上載修改 15
2.3.6 Pull命令:取回修改 16
2.4 本章小結 17
第3章 提交是什麼 18
3.1 訪問許可權與時間戳 18
3.2 add命令與commit命令 19
3.3 再談提交散列值 19
3.4 提交歷史 20
3.5 一種略有不同的提交查看方法 21
3.6 同一項目的多部不同歷史 21
3.6.1 部分輸出:-n 22
3.6.2 格式化輸出:--format、
--oneline 23
3.6.3 統計修改信息:--stat、
--shortstat 23
3.6.4 日誌選項:--graph 23
3.7 本章小結 24
第4章 多次提交 25
4.1 status命令 25
4.2 存儲在暫存區中的快照 28
4.3 怎樣的修改不該被提交 28
4.4 用.gitignore忽略非版本控制檔案 30
4.5 儲藏 31
4.6 本章小結 31
第5章 版本庫 33
5.1 一種簡單而高效的存儲系統 33
5.2 存儲:Blob與Tree 34
5.3 相同數據只存儲一次 35
5.4 壓縮相似內容 35
5.5 當不同檔案的散列值相同時,
情況會很糟糕嗎 35
5.6 提交對象 36
5.7 提交歷史中的對象重用 36
5.8 重命名、移動與複製 37
5.9 本章小結 39
第6章 分支 40
6.1 並行式開發 40
6.2 修復舊版本中的bug 41
6.3 分支 41
6.4 泳道 42
6.5 當前活躍分支 42
6.6 重置分支指針 44
6.7 刪除分支 44
6.8 清理提交對象 45
6.9 本章小結 45
第7章 合併分支 46
7.1 合併過程中發生的事 47
7.2 衝突 48
7.3 編輯衝突 48
7.4 衝突標誌 49
7.5 解決編輯衝突 50
7.6 內容衝突又是什麼呢 51
7.7 快進合併 52
7.8 第 一父級提交歷史 53
7.9 棘手的合併衝突 54
7.10 無論如何,終會有可行的方式 55
7.11 本章小結 56
第8章 通過變基淨化歷史 57
8.1 工作原理:複製提交 57
8.2 避免“鑽石鏈” 58
8.3 什麼情況下會遇到衝突呢 59
8.4 移植分支 60
8.5 執行變基後原提交的情況 61
8.6 為什麼提交的原件與副本存在
於同一版本庫中是有問題的 61
8.7 撿取 62
8.8 本章小結 62
第9章 版本庫間的交換 64
9.1 克隆版本庫 64
9.2 如何告知Git其他版本庫的位置 65
9.3 給別處的版本庫起個名字 65
9.4 獲取數據 66
9.5 遠程跟蹤分支:監控其他分支 67
9.6 利用本地分支操作別處的版本庫 68
9.7 Pull = Fetch + Merge 69
9.8 討厭鑽石鏈的人:請用--rebase
選項 69
9.9 push:pull的反面 69
9.10 命名分支 71
9.11 本章小結 72
第 10章 版本標籤 73
10.1 創建標籤 73
10.2 當前存在哪些標籤 74
10.3 列印標籤的散列值 74
10.4 將標籤添加到日誌輸出中 74
10.5 在哪個版本里呢 75
10.6 如何修改標籤呢 75
10.7 當我們需要一個浮動標籤時 75
10.8 本章小結 75
第 11章 版本庫之間的依賴 77
11.1 與子模組之間的依賴 77
11.2 與子樹之間的依賴 82
11.3 本章小結 85
第 12章 技巧 86
12.1 不要慌,我們有一個引用日誌 86
12.2 忽略臨時性的本地修改 87
12.3 檢查對文本檔案的修改 88
12.4 別名—Git命令的捷徑 88
12.5 為臨時指向的提交創建分支 89
12.6 將提交移動到另一分支 89
第 13章 工作流簡介 91
13.1 我們會在什麼時候使用這些
工作流呢 91
13.1.1 項目開始階段 91
13.1.2 項目開發階段 92
13.1.3 項目交付階段 92
13.1.4 項目重構階段 92
13.2 工作流的結構 93
13.2.1 條目 93
13.2.2 概述 93
13.2.3 使用要求 93
13.2.4 工作流簡述 93
13.2.5 執行過程及其實現 94
13.2.6 何不換一種做法 94
第 14章 項目設定 95
14.1 概述 96
14.2 使用要求 96
14.3 工作流簡述:設定項目 97
14.4 執行過程及其實現 98
14.4.1 基於項目創建一個
新的版本庫 98
14.4.2 以檔案訪問的方式
共享版本庫 101
14.4.3 用Git daemon來共享
版本庫 102
14.4.4 用HTTP協定來共享
版本庫 103
14.4.5 用SSH協定來共享
版本庫 106
14.5 何不換一種做法 107
何不放棄推送操作 107
14.6 純拉取操作 108
第 15章 相同分支上的開發 109
15.1 概述 110
15.2 使用要求 111
15.3 工作流簡述:相同分支上
的開發 111
15.4 執行過程及其實現 111
在master分支上操作 111
15.5 何不換一種做法 114
何不用變基來代替合併 114
第 16章 基於特性分支的開發 116
16.1 概述 116
16.2 使用要求 117
16.3 工作流簡述:基於特性分支
的開發 118
16.4 執行過程及其實現 118
16.4.1 創建特性分支 118
16.4.2 在master分支上集成
某一特性 119
16.4.3 將master分支上所發生的修改傳遞給特性分支 124
16.5 何不換一種做法 125
16.5.1 何不直接在部分交付後
的合併版本上繼續
後續工作 125
16.5.2 何不到發行版即將成型時
再集成特性分支 126
16.5.3 何不交換特性分支之間
的提交 126
第 17章 二分法排錯 130
17.1 概述 130
17.2 使用要求 131
17.3 工作流簡述:二分法排錯 131
17.4 執行過程及其實現 131
17.4.1 用二分法人工排錯 132
17.4.2 用二分法自動排錯 134
17.5 何不換一種做法 138
何不用合併操作將測試腳本添加到
舊提交中去 138
第 18章 基於構建伺服器的工作 139
18.1 概述 139
18.2 使用要求 140
18.3 工作流簡述:基於構建伺服器
的工作 140
18.4 執行過程及其實現 141
18.4.1 預備構建伺服器 141
18.4.2 構建伺服器上的Git 142
18.4.3 比對本地開發版本
與**後成功構建版本
之間的差異 145
18.4.4 基於構建歷史的排錯 146
18.5 何不換一種做法 149
18.5.1 何不使用標籤 149
18.5.2 何不將構建歷史放在中央
版本庫中 149
第 19章 發行版交付 150
19.1 概述 150
19.2 使用要求 151
19.3 工作流簡述:“發行版
交付” 152
19.4 執行過程及其實現 152
19.4.1 預備階段:創建stable
分支 152
19.4.2 預備並創建發行版 154
19.4.3 創建補丁 157
19.5 何不換一種做法 159
19.5.1 為什麼不能只用標籤 159
19.5.2 何不乾脆不用標籤 159
19.5.3 為什麼不能用快進式
合併 160
19.5.4 為什麼不直接在stable分支
上實現補丁 160
第 20章 拆分大項目 161
20.1 概述 161
20.2 使用要求 163
20.3 工作流簡述:“拆分大項目” 163
20.4 執行過程及其實現 163
20.4.1 拆分模組版本庫 163
20.4.2 將拆分出的模組作為外部
版本庫集成 165
20.5 何不換一種做法 166
20.5.1 何不採用一個全新
的版本庫 166
20.5.2 為什麼不採用--subdirectory
-filter選項 167
第 21章 合併小型項目 168
21.1 概述 168
21.2 使用要求 169
21.3 工作流簡述:“合併小項目” 170
21.4 執行過程及其實現 170
合併版本庫 170
21.5 何不換一種做法 172
為什麼不直接合併,跳過創建
項目檔案 172
第 22章 外包長歷史記錄 173
22.1 概述 173
22.2 使用要求 174
22.3 工作流簡述:
“外包長歷史記錄” 175
22.4 執行過程及其實現 175
22.4.1 外包項目歷史 175
22.4.2 連結到當前活動
版本庫 178
22.5 何不換一種做法 179
為什麼不獲取檔案版本庫
(而是採用連結) 179
第 23章 與其他版本控制系統
並行使用 180
23.1 概述 180
23.2 使用要求 182
23.3 工作流簡述:“與其他版本控制
系統並行使用” 182
23.4 執行過程及其實現 182
23.4.1 初始部署版本庫 183
23.4.2 得到中央版本控制管理中
的更新修改 184
23.4.3 將修改提交傳輸到中央本
版控制系統 185
23.5 何不換一種做法 188
為什麼不選擇一個Git版本庫 188
第 24章 遷移到Git 189
24.1 概述 189
24.2 使用要求 190
24.3 工作流簡述:“遷移到Git” 190
24.4 執行過程及其實現 190
24.4.1 學習和練習使用Git 190
24.4.2 做出遷移的決定 191
24.4.3 找到分支 193
24.4.4 準備版本庫 194
24.4.5 獲取分支 195
24.4.6 以懷疑的態度使用接受
這個版本庫 197
24.4.7 清理工作 199
24.5 何不換一種做法 199
24.5.1 為什麼不接收整個項目
歷史 199
24.5.2 是否可以沒有遺產
分支 199
24.5.3 沒有雙版本控制工作區
可以嗎 200
第 25章 還有一些其他任務 201
25.1 互動式變基操作——完善
歷史記錄 201
25.2 補丁處理 202
25.3 用E-mail傳送補丁 202
25.4 打包操作——離線模式下的
推送操作 203
25.5 創建歸檔 203
25.6 Git的圖形化工具 204
25.7 與Subversion的協作 205
25.8 命令別名 205
25.9 標註提交 206
25.10 用鉤子擴展Git 206
25.11 將版本庫託管到Github上 207
第 26章 Git的缺點 208
26.1 高複雜度 208
26.2 複雜的子模組 209
26.3 大型二進制檔案的資源消耗 210
26.4 版本庫只能作為一個整體
被處理 211
26.5 版本庫只能作為整體被授權 211
26.6 能用於歷史分析的圖形化
工具偏弱 212