Git 學習指南 Git学习指南

普萊貝爾, 斯拉赫曼

  • 出版商: 人民郵電
  • 出版日期: 2016-12-01
  • 售價: $419
  • 貴賓價: 9.5$398
  • 語言: 簡體中文
  • 頁數: 212
  • 裝訂: 平裝
  • ISBN: 7115436762
  • ISBN-13: 9787115436764
  • 相關分類: Version Control
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

<內容簡介>

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