Git軟件開發實戰 (Professional Git) Git软件开发实战

布倫特·勒思特爾 (Brent Laster)

立即出貨 (庫存 < 4)

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

商品描述

借助Git的強大功能簡單化開發週期

《Git軟件開發實戰》一書提供了在使用Git這一流行的軟件開發工具方面的有效方法,並且為新用戶和資深用戶提供了新指導。《Git軟件開發實戰》包含針對傳統系統的廣泛探討,以及獨特於Git的有助於在識別和規劃差異時藉鑑已有技能的註意事項。書中大量的示例和圖示旨在強化關鍵的概念以及增強用戶的理解。《Git軟件開發實戰》專註於實踐並且超越了技術教程,能助你將Git模型集成到現實環境的工作流中,是快速提升學習效率的寶貴資源。

主要內容
-提供基本Git模型和整個工作流處理的清晰理解
-包含常用源管理概念和命令的Git版本
-展示如何追蹤變更、處理分支以及利用Git完整功能的優勢
-包含現實環境中的示例,以便熟練掌握和更好地消化這些概念
-提供有助於可視化關鍵理念和工作流的簡單、清晰圖示
-重點介紹不常為人知的Git特性以便得到額外的收益
-展示如何避免新用戶常犯的錯誤和失誤

作者簡介

Brent Laster是一位高級經理、軟件開發人員,他供職於位於北卡羅來納州卡瑞的SAS的研發部門。他管理參與發布工程設計流程和內部工具的幾個小組。他還充當使用開源技術的資源的角色,並且負責進行Git、Gerrit、Gradle和Jenkins這樣的技術培訓課程,同時面向美國和美國之外的國家。

除了企業培訓之外,Brent還為各種技術會議發起並提供專題研討會。在像Rich Web Experience/Continuous Delivery Experience、ÜberConf、OSCON這樣的會議上,他提供了關於開源技術(以及如何應用它們)的專題研討會和諮詢性研討。他還是No Fluff Just Stuff這樣雜誌的出版物的撰稿者。Brent時不時地進行在線網絡培訓。

Brent的熱情在於傳授知識,並且是以讓所有人都能理解的方式來講解這些難以理解的概念。他參與技術培訓已經超過25年了,並且在持續地尋求向其他人展示如何才能使用技術來簡化和自動化工作的方法。
可以在Brent的LinkedIn頁面http://linkedin.com/in/BrentLaster上或者通過Twitter賬號 @BrentCLaster來了解更多與他及其工作有關的內容。
 

目錄大綱

第Ⅰ部分 理解Git相關概念

第1章 什麼是Git 3
1.1 Git的歷史 4
1.2 行業標準工具 4
1.3 Git生態系統 5
1.3.1 核心的Git 5
1.3.2 Git託管站點 6
1.3.3 自託管軟件包 7
1.3.4 易用的包 7
1.3.5 插件 9
1.3.6 包含Git的工具 9
1.3.7 Git庫 9
1.4 Git的優勢和挑戰 10
1.4.1 優勢 10
1.4.2 挑戰 12
1.5 本章小結 15

第2章 關鍵概念 17
2.1 設計概念:面向用戶的 17
2.1.1 集中式模型 17
2.1.2 分佈式模型 18
2.2 設計概念:內部的 19
2.2.1 差異增量存儲 20
2.2.2 快照存儲 20
2.2.3 Git的存儲需求 21
2.3 倉庫設計注意事項 22
2.3.1 倉庫範圍 23
2.3.2 文件範圍 24
2.3.3 共享代碼 25
2.4 本章小結 26

第3章 Git升級模型 27
3.1 Git的級別 27
3.1.1 開發-測試-生產和Git 27
3.1.2 移動內容的核心Git命令 34
3.2 本章小結 36
3.3 關於連接實驗課程1:安裝Git 36
連接實驗課程1:安裝Git 37

第Ⅱ部分 使用Git

第4章 配置和設置 43
4.1 在Git中執行命令 43
4.1.1 操作數類型 44
4.1.2 高層命令和底層命令的對比 45
4.1.3 指定參數 47
4.1.4 自動完成 47
4.2 配置Git 48
4.2.1 告知Git你的身份 49
4.2.2 配置範圍 50
4.2.3 默認的編輯器 53
4.2.4 設置行結束符 54
4.2.5 別名 55
4.2.6 Windows文件系統緩存 56
4.3 初始化倉庫 56
4.3.1 git init 56
4.3.2 git clone 57
4.4 高級主題 58
4.4.1 git init揭秘 58
4.4.2 進一步深入了解Git倉庫 59
4.4.3 將config命令映射到配置文件 60
4.4.4 創建參數化別名 61
4.5 本章小結 63

第5章 變得高效 65
5.1 獲得幫助 65
5.2 多倉庫模型 67
5.3 添加內容以便追踪——add 69
5.4 完成變更——提交 77
5.4.1 先決條件 78
5.4.2 提交範圍 79
5.5 將一切結合在一起 79
5.5.1 修正提交 80
5.5.2 提交的結果 82
5.6 高級主題 84
5.6.1 使用--verbose選項 85
5.6.2 完整的消息提交過程 85
5.6.3 自動更正和自動執行 86
5.7 本章小結 87
5.8 關於連接實驗課程2:創建和探究Git倉庫並且管理內容 87
連接實驗課程2:創建和探究Git倉庫並且管理內容 89

第6章 追踪變更 95
6.1 git status 95
6.1.1 具有狀態的工作流示例 96
6.1.2 status命令的簡要形式 100
6.2 git diff 102
6.2.1 Git中的重要符號名稱 102
6.2.2 如何思考Git進行對比的方法 102
6.2.3 僅顯示有差異的文件名稱 107
6.2.4 word-diff 107
6.2.5 忽略非關鍵變更 107
6.2.6 對比兩次提交 109
6.2.7 可視化對比 111
6.2.8 其他的對比技巧 114
6.3 本章小結 115
6.4 連接實驗課程3:通過文件狀態生命週期追踪內容 116
連接實驗課程3:通過文件狀態生命週期追踪內容 117

第7章 處理隨時間推移而出現的變更以及使用標籤 121
7.1 log命令 121
7.1.1 常用的顯示和過濾選項 122
7.1.2 時間限制選項 123
7.1.3 按文件和路徑顯示歷史 124
7.1.4 日誌輸出格式 125
7.1.5 搜索歷史 126
7.2 git blame 127
7.3 可視化地查看歷史 130
7.4 標籤 131
7.4.1 查看標籤詳情 132
7.4.2 修改標籤 132
7.4.3 簡單的標籤示例 133
7.5 撤消歷史中的變更 134
7.5.1 reset——回滾變更 134
7.5.2 完全重置本地環境 135
7.5.3 revert——消除變更 136
7.6 高級主題 139
7.6.1 簽署提交和標籤 139
7.6.2 引用日誌 141
7.7 本章小結 143
7.8 關於連接實驗課程4:使用Git歷史、標籤和別名 143
連接實驗課程4:使用Git歷史、標籤和別名 145

第8章 處理本地分支 149
8.1 什麼是分支?149
8.1.1 來自另一個源管理系統的示例 150
8.1.2 分支的Git模型 150
8.1.3 創建一個分支 151
8.1.4 簽出一個分支 152
8.1.5 將內容添加到分支 153
8.1.6 一個工作目錄——多個分支 154
8.1.7 獲得關於分支的信息 157
8.1.8 刪除或重命名一個分支 158
8.1.9 使用分支進行開發 161
8.2 高級主題 167
8.2.1 簽出非分支提交 168
8.2.2 簽出單獨的文件 173
8.3 本章小結 174
8.4 連接實驗課程5:處理分支 174
連接實驗課程5:處理分支 175

第9章 合併內容 177
9.1 合併的基礎 177
9.1.1 merge命令 178
9.1.2 為合併做準備 178
9.1.3 合併的類型 178
9.1.4 變基——合併歷史 182
9.1.5 櫻桃揀選 185
9.1.6 櫻桃揀选和變基之間的差異 188
9.1.7 合併操作 189
9.2 處理衝突 192
9.2.1 合併處理是一種狀態 192
9.2.2 衝突的錯誤消息 193
9.2.3 終止操作 194
9.2.4 處理衝突——工作流 194
9.2.5 解決選項和策略 198
9.3 可視化合併 203
9.3.1 選擇一款合併工具 205
9.3.2 讓合併工具可供Git使用 206
9.4 高級主題 206
9.4.1 用於衝突標記的可選樣式 207
9.4.2 高級變基場景 208
9.4.3 交互式變基 213
9.5 本章小結 220
9.6 連接實驗課程6:合併實踐 220
連接實驗課程6:合併實踐 221

第10章 Git中的支持文件 223
10.1 Git屬性文件 224
10.1.1 Git屬性文件的作用 224
10.1.2 Git屬性的範圍 224
10.1.3 文件格式 226
10.1.4 常見用例 226
10.1.5 獲取文件的屬性信息 232
10.2 Git忽略文件 233
10.2.1 Git忽略的範圍 233
10.2.2 文件格式 234
10.2.3 獲取文件的忽略信息 236
10.3 本章小結 236

第11章 用Git做更多的事情 239
11.1 修改本地環境中文件和目錄的佈局 239
11.1.1 儲藏 240
11.1.2 暫存命令 246
11.1.3 mv 246
11.1.4 rm 247
11.2 用於搜索的命令 248
11.2.1 grep 248
11.2.2 Git日誌搜索 251
11.3 為變更處理補丁和存檔 253
11.3.1 archive 254
11.3.2 bundle 254
11.3.3 通過電子郵件共享補丁 256
11.3.4 apply 257
11.3.5 am 257
11.3.6 用郵件發送補丁文件 258
11.4 用於清理的命令 260
11.4.1 clean 260
11.4.2 gc 262
11.4.3 notes 263
11.5 高級主題 265
11.5.1 filter-branch 265
11.5.2 rev-list 265
11.5.3 bisect 272
11.5.4 rerere 279
11.6 本章小結 287
11.7 連接實驗課程7:刪除、重命名和儲藏 287
連接實驗課程7:刪除、重命名和儲藏 289

第12章 理解遠程——分支和操作 293
12.1 遠程 293
12.1.1 遠程訪問協議 295
12.1.2 remote命令 297
12.1.3 Git如何與遠程環境交互 299
12.1.4 遠程追踪分支 299
12.1.5 git clone 300
12.1.6 查看關於遠程分支的信息 303
12.1.7 push 307
12.1.8 fetch 315
12.1.9 pull 317
12.2 本章小結 320
12.3 連接實驗課程8:設置GitHub賬戶並且克隆倉庫 320
連接實驗課程8:設置GitHub賬戶並且克隆倉庫 321

第13章 理解遠程——變更工作流 323
13.1 Git中基本的衝突以及合併解決工作流 324
13.2 託管倉庫 336
13.2.1 用於使用Git進行協作的模型 336
13.2.2 對所有內容進行匯總 340
13.3 本章小結 341
13.4 連接實驗課程9:對遠程倉庫使用整體工作流 342
連接實驗課程9:對遠程倉庫使用整體工作流 343

第14章 處理Git中的樹和模塊 347
14.1 工作樹 347
14.1.1 添加一棵工作樹 348
14.1.2 列出工作樹 350
14.1.3 精簡工作樹 351
14.2 子模塊 352
14.2.1 理解子模塊如何工作 353
14.2.2 添加子模塊 353
14.2.3 判定子模塊狀態 355
14.2.4 處理多個子模塊 359
14.2.5 從子模塊的遠程更新子模塊 359
14.2.6 查看子模塊差異 361
14.2.7 超級項目與子模塊對比 362
14.2.8 子模塊的問題 364
14.2.9 更新子模塊引用 365
14.2.10 在超級項目被更新後更新子模塊 366
14.2.11 推送來自子模塊的變更 368
14.2.12 子模塊與合併 369
14.2.13 註銷一個子模塊 370
14.3 子樹 370
14.3.1 添加一個項目作為子樹 371
14.3.2 更新子樹 374
14.3.3 使用子樹分隔功能 374
14.3.4 從分隔內容中創建一個新的項目 375
14.3.5 子樹推送 376
14.4 本章小結 376
14.5 連接實驗課程 376
14.5.1 連接實驗課程10:使用工作樹 376
14.5.2 連接實驗課程11:使用子模塊 376
14.5.3 連接實驗課程12:使用子樹 377
連接實驗課程10:使用工作樹 379
連接實驗課程11:使用子模塊 381
連接實驗課程12:使用子樹 385

第15章 使用Git掛鉤程序擴展Git功能 389
15.1 安裝掛鉤 389
15.2 更新掛鉤 390
15.3 常用掛鉤屬性 391
15.3.1 掛鉤域 391
15.3.2 控制工作流的返回碼 391
15.3.3 工作目錄訪問 392
15.3.4 環境變量 392
15.4 掛鉤描述 392
15.4.1 applypatch-msg 393
15.4.2 pre-applypatch 393
15.4.3 post-applypatch 393
15.4.4 pre-commit 393
15.4.5 prepare-commit-msg 395
15.4.6 commit-message 396
15.4.7 post-commit 398
15.4.8 pre-rebase 399
15.4.9 post-checkout 399
15.4.10 post-merge 399
15.4.11 pre-push 400
15.4.12 pre-receive 400
15.4.13 update 401
15.4.14 post-receive 401
15.4.15 post-update 402
15.5 其他掛鉤 403
15.5.1 push-to-checkout 403
15.5.2 pre-auto-gc 403
15.5.3 post-rewrite 403
15.6 掛鉤快速參考 403
15.7 本章小結 405