精通 Git, 2/e (Pro Git, 2/e)

[美] 斯科特·查康 本·斯特勞布

立即出貨 (庫存=1)

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

商品描述

Git僅用了幾年時間就一躍成為了幾乎一統商業及開源領域的版本控制系統。本書全面介紹Git進行版本管理的基礎和進階知識。全書共10章,內容由淺入深,展現了普通程序員和項目經理如何有效利用Git提高工作效率,掌握分支概念,靈活地將Git用於服務器和分佈式工作流,如何將開發項目遷移到Git,以及如何高效利用GitHub。

作者簡介

Scott Chacon
GitHub聯合創始人,曾任GitHub首席信息官,現任在線教育創業公司Chatterbug的首席執行官。在GitHub工作的7年裡,他負責維護Git主頁git-scm.com,並在許多技術大會上發表過演講,以此傳播Git文化和開源精神。GitHub ID:schacon。

Ben Straub
軟件開發者,曾就職於GitHub,參與開發了Libgit2開發包以及GitHub for Windows客戶端,另著有《GitHub實踐》。GitHub ID:ben。

目錄大綱

第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