編輯推薦
高效的版本控製是成功開發軟件項目的關鍵。自2005年誕生以來,Git以其分布式特點和對非綫性開發的強有力支持,成為瞭許多軟件項目的版本控製係統。本書不僅是Git日常操作指南,而且深入剖析瞭Git的內部原理,能有效幫助程序員提升軟技能。
如果你剛剛啓程探索Git,本書對於Git的用法、基本命令和分支機製的講解將助你輕鬆入門、不走彎路。
如果你在Git之路上已經走瞭一些時日,本書關於Git服務器、配置文件和鈎子係統的內容將為你補充繼續前行所需的能量。
如果你不得不同時使用Git和其他版本控製係統,本書會教你如何將Git作為客戶端來輕鬆應對此種情景。
內容簡介
Git僅用瞭幾年時間就一躍成為瞭幾乎一統商業及開源領域的版本控製係統。本書全麵介紹Git進行版本管理的基礎和進階知識。全書共10章,內容由淺入深,展現瞭普通程序員和項目經理如何有效利用Git提高工作效率,掌握分支概念,靈活地將Git用於服務器和分布式工作流,如何將開發項目遷移到Git,以及如何高效利用GitHub。
作者簡介
【作者簡介】
Scott Chacon
GitHub聯閤創始人,曾任GitHub首xi信息官,現任在綫教育創業公司Chatterbug的首xi執行官。在GitHub工作的7年裏,他負責維護Git主頁git-scm.com,並在許多技術大會上發錶過演講,以此傳播Git文化和開源精神。GitHub ID:schacon。
Ben Straub
軟件開發者,曾就職於GitHub,參與開發瞭Libgit2開發包以及GitHub for Windows客戶端,另著有《GitHub實踐》。GitHub ID:ben。
【譯者簡介】
門佳
GNU/Linux深度用戶,喜歡溯本求源,挖掘技術背後的來龍去脈,對程序語言設計理論、編譯技術、操作係統設計與實現、Web開發等領域均有涉獵,譯著包括《Linux Shell腳本攻略》《TCP Sockets編程》《精通JavaScript(第2版)》《Linux命令行與shell腳本編程大全(第3版)》等。
劉梓懿
ThoughtWorks高級軟件工程師,***AWS認證架構師,曾為多個世界知名客戶提供軟件交付和谘詢服務,在大型組織的雲架構應用、持續交付、分層自動化測試體係建設和DevOps轉型等方麵擁有豐富的實踐經驗。GitHub ID:richardzone。
目錄
第1章 入門 1
1.1 關於版本控製 1
1.1.1 本地版本控製係統 1
1.1.2 集中式版本控製係統 2
1.1.3 分布式版本控製係統 3
1.2 Git簡史 4
1.3 Git基礎 4
1.3.1 快照,而非差異 4
1.3.2 幾乎所有操作都在本地執行 5
1.3.3 Git的完整性 6
1.3.4 Git通常隻增加數據 6
1.3.5 三種狀態 7
1.4 命令行 8
1.5 安裝Git 8
1.5.1 Linux上的安裝方法 8
1.5.2 Mac上的安裝方法 8
1.5.3 Windows上的安裝方法 9
1.5.4 從源碼安裝 9
1.6 Git的首次配置 10
1.6.1 用戶身份 11
1.6.2 個人編輯器 11
1.6.3 檢查個人設置 12
1.7 獲取幫助 12
1.8 小結 12
第2章 Git基礎 13
2.1 獲取Git倉庫 13
2.1.1 在現有目錄中初始化Git倉庫 13
2.1.2 剋隆現有倉庫 14
2.2 在Git倉庫中記錄變更 14
2.2.1 查看當前文件狀態 15
2.2.2 跟蹤新文件 16
2.2.3 暫存已修改的文件 16
2.2.4 顯示更簡潔的狀態信息 18
2.2.5 忽略文件 18
2.2.6 查看已暫存和未暫存的變更 19
2.2.7 提交變更 21
2.2.8 跳過暫存區 22
2.2.9 移除文件 23
2.2.10 移動文件 24
2.3 查看提交曆史 25
2.4 撤銷操作 30
2.4.1 撤銷已暫存的文件 30
2.4.2 撤銷對文件的修改 31
2.5 遠程倉庫的使用 32
2.5.1 顯示遠程倉庫 32
2.5.2 添加遠程倉庫 33
2.5.3 從遠程倉庫獲取和拉取數據 34
2.5.4 將數據推送到遠程倉庫 34
2.5.5 檢查遠程倉庫 35
2.5.6 刪除和重命名遠程倉庫 36
2.6 標記 36
2.6.1 列舉標簽 36
2.6.2 創建標簽 37
2.6.3 注釋標簽 37
2.6.4 輕量標簽 38
2.6.5 補加標簽 38
2.6.6 共享標簽 39
2.6.7 檢齣標簽 39
2.7 Git彆名 40
2.8 小結 41
第3章 Git分支機製 42
3.1 分支機製簡述 42
3.1.1 創建新分支 44
3.1.2 切換分支 45
3.2 基本的分支與閤並操作 48
3.2.1 基本的分支操作 48
3.2.2 基本的閤並操作 52
3.2.3 基本的閤並衝突處理 53
3.3 分支管理 55
3.4 與分支有關的工作流 56
3.4.1 長期分支 57
3.4.2 主題分支 58
3.5 遠程分支 59
3.5.1 推送 63
3.5.2 跟蹤分支 64
3.5.3 拉取 66
3.5.4 刪除遠程分支 66
3.6 變基 66
3.6.1 基本的變基操作 66
3.6.2 更有趣的變基操作 69
3.6.3 變基操作的潛在危害 71
3.6.4 隻在需要的時候執行變基操作 74
3.6.5 變基操作與閤並操作的對比 75
3.7 小結 75
第4章 Git服務器 76
4.1 協議 76
4.1.1 本地協議 76
4.1.2 HTTP協議 78
4.1.3 SSH協議 79
4.1.4 Git協議 80
4.2 在服務器上搭建Git 80
4.2.1 將裸倉庫放置在服務器上 81
4.2.2 小型團隊配置 82
4.3 生成個人的SSH公鑰 83
4.4 設置服務器 84
4.5 Git守護進程 85
4.6 智能HTTP 87
4.7 GitWeb 88
4.8 GitLab 90
4.8.1 安裝 90
4.8.2 管理 91
4.8.3 基本用法 93
4.8.4 協作 93
4.9 第三方托管選擇 94
4.10 小結 94
第5章 分布式Git 95
5.1 分布式工作流 95
5.1.1 集中式工作流 95
5.1.2 集成管理者工作流 96
5.1.3 司令官與副官工作流 97
5.1.4 工作流小結 97
5.2 為項目做貢獻 98
5.2.1 提交準則 98
5.2.2 私有小型團隊 100
5.2.3 私有管理團隊 105
5.2.4 派生的公開項目 110
5.2.5 通過電子郵件接受補丁的公開項目 113
5.2.6 小結 115
5.3 維護項目 115
5.3.1 使用主題分支 115
5.3.2 應用來自電子郵件的補丁 116
5.3.3 檢齣遠程分支 118
5.3.4 確定引入內容 119
5.3.5 整閤所貢獻的工作結果 120
5.3.6 為發布版打標簽 125
5.3.7 生成構建編號 126
5.3.8 準備發布 126
5.3.9 簡報 127
5.4 小結 127
第6章 GitHub 128
6.1 賬號設置與配置 128
6.1.1 SSH訪問 129
6.1.2 頭像 130
6.1.3 電子郵件地址 131
6.1.4 雙因素身份驗證 132
6.2 為項目做貢獻 132
6.2.1 派生項目 132
6.2.2 GitHub流程 133
6.2.3 拉取請求的高級用法 140
6.2.4 Markdown 144
6.3 項目維護 148
6.3.1 創建新倉庫 148
6.3.2 添加協作人員 150
6.3.3 管理拉取請求 150
6.3.4 提醒和通知 155
6.3.5 特殊文件 158
6.3.6 項目管理 159
6.4 組織管理 160
6.4.1 組織的基本操作 160
6.4.2 團隊 160
6.4.3 審計日誌 162
6.5 GitHub腳本化 162
6.5.1 鈎子係統 162
6.5.2 GitHub API 166
6.6 小結 170
第7章 Git工具 171
7.1 選擇修訂版本 171
7.1.1 單個修訂版本 171
7.1.2 提交範圍 175
7.2 交互式暫存 177
7.2.1 暫存和取消暫存文件 178
7.2.2 暫存補丁 180
7.3 儲藏與清理 181
7.3.1 儲藏工作成果 181
7.3.2 靈活運用儲藏 183
7.3.3 從儲藏中創建分支 184
7.3.4 清理工作目錄 184
7.4 簽署工作 186
7.4.1 GPG簡介 186
7.4.2 簽署標簽 186
7.4.3 驗證標簽 187
7.4.4 簽署提交 187
7.4.5 所有人都得簽署 189
7.5 搜索 189
7.5.1 git grep 189
7.5.2 Git日誌搜索 190
7.6 重寫曆史 192
7.6.1 修改最近一次提交 192
7.6.2 修改多個提交消息 192
7.6.3 重排提交 194
7.6.4 壓縮提交 195
7.6.5 拆分提交 195
7.6.6 超強命令:filter-branch 196
7.7 重置揭秘 197
7.7.1 三棵樹 198
7.7.2 工作流 199
7.7.3 重置的作用 203
7.7.4 利用路徑進行重置 205
7.7.5 壓縮 207
7.7.6 檢齣 209
7.7.7 小結 210
7.8 閤並的高級用法 211
7.8.1 閤並衝突 211
7.8.2 撤銷閤並 220
7.8.3 其他類型的閤並 222
7.9 rerere 225
7.10 使用Git調試 230
7.10.1 文件標注 230
7.10.2 二分查找 232
7.11 子模塊 233
7.11.1 開始使用子模塊 233
7.11.2 剋隆含有子模塊的項目 235
7.11.3 開發含有子模塊的項目 236
7.11.4 子模塊技巧 245
7.11.5 子模塊的問題 246
7.12 打包 248
7.13 替換 251
7.14 憑據存儲 257
7.14.1 底層實現 258
7.14.2 自定義憑據緩存 259
7.15 小結 261
第8章 自定義Git 262
8.1 配置Git 262
8.1.1 客戶端基本配置 262
8.1.2 Git中的配色 265
8.1.3 外部的閤並與diff工具 265
8.1.4 格式化與空白字符 268
8.1.5 服務器配置 270
8.2 Git屬性 270
8.2.1 二進製文件 271
8.2.2 關鍵字擴展 273
8.2.3 導齣倉庫 276
8.2.4 閤並策略 277
8.3 Git鈎子 277
8.3.1 安裝鈎子 277
8.3.2 客戶端鈎子 278
8.3.3 服務器端鈎子 279
8.4 Git強製策略示例 280
8.4.1 服務器端鈎子 280
8.4.2 客戶端鈎子 285
8.5 小結 288
第9章 Git與其他係統 289
9.1 作為客戶端的Git 289
9.1.1 Git與Subversion 289
9.1.2 Git與Mercurial 298
9.1.3 Git與Perforce 305
9.1.4 Git與TFS 317
9.2 遷移到Git 325
9.2.1 Subversion 325
9.2.2 Mercurial 327
9.2.3 Perforce 329
9.2.4 TFS 330
9.2.5 自定義導入工具 331
9.3 小結 337
第10章 Git內幕 338
10.1 底層命令和高層命令 338
10.2 Git對象 339
10.2.1 樹對象 341
10.2.2 提交對象 343
10.2.3 對象存儲 345
10.3 Git引用 346
10.3.1 HEAD 348
10.3.2 標簽對象 348
10.3.3 遠程引用 349
10.4 包文件 350
10.5 引用規格 352
10.5.1 推送引用規格 354
10.5.2 刪除引用 354
10.6 傳輸協議 354
10.6.1 啞協議 355
10.6.2 智能協議 356
10.6.3 協議小結 359
10.7 維護與數據恢復 359
10.7.1 維護 359
10.7.2 數據恢復 360
10.7.3 移除對象 362
10.8 環境變量 365
10.8.1 全局行為 365
10.8.2 倉庫位置 365
10.8.3 路徑規格 366
10.8.4 提交 366
10.8.5 網絡 366
10.8.6 差異與閤並 367
10.8.7 調試 367
10.8.8 雜項 369
10.9 小結 369
附錄A 其他環境中的Git 370
附錄B 在應用程序中嵌入Git 381
附錄C Git命令 390
精通Git 第2版 epub pdf mobi txt 電子書 下載 2024
精通Git 第2版 下載 epub mobi pdf txt 電子書