編輯推薦
Git 是當今流行版本控製係統。本書並不偏重理論介紹,也不麵麵俱到,而是一本學習Git 的實用指南。本書首先介紹瞭Git 的基礎知識,然後關注於敏捷開發,並給齣工作流展示瞭解決現實問題所需的命令和選項。
本書包括以下內容:
● 入門教程:重點展示每一條重要Git 命令的用法。
● 技術介紹:介紹如何使用Git 處理一個團隊開發中的各項事務,用大量的實例演示那些主要Git 命令的使用方式,並且解釋其中的基本概念,如提交、版本庫、分支、閤並、重訂等,幫助讀者瞭解Git 的具體工作方式。
● 工作流:工作流是指在項目中使用Git 的實用場景,例如創建一個項目的發行版等。對於每個工作流,本書從以下幾項來描述其目標場景。
解決的是什麼問題;
需要增加什麼必要條件;
解決問題的人以及解決的時間。
● “分步”指令:這是一組常用命令序列。例如,移動某個分支就屬於一條既定的“分步”指令。
本書適閤於從事軟件開發工作,想要掌握Git 工具的讀者閱讀參考。
內容簡介
Git是一款免費、開源的分布式版本控製係統,也是當今流行的版本控製係統之一,在眾多的項目開發中普遍使用,得到程序員和工程師的歡迎和喜愛。
本書是一本麵嚮專業開發者的圖書。全書內容分為26章,從基礎概念講起,陸續嚮讀者介紹瞭有關Git的各種操作和使用技巧,不僅將提交、版本庫、分支、閤並等命令講解到位,還介紹瞭工作流、基於分支的開發、二分法排錯、發行版交付、項目的拆分與閤並、項目的遷移等內容。
本書適閤從事項目開發的專業人士閱讀,想要學習Git的讀者也可以選用。
作者簡介
René Prei?el,Bj?rn Stachmann,德國傑齣軟件開發人員。
淩傑,畢業於浙江大學遠程教育學院,曾擔任多個論壇C++版主。知名技術圖書譯者。翻譯有《Python算法教程》等。
目錄
目錄
第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
Git學習指南 下載 mobi epub pdf txt 電子書 格式