1. 程式人生 > >Git權威指南 pdf下載

Git權威指南 pdf下載

這本書基本上講解了作為版本管理的基本操作。最關鍵的是每一個操作後面都告訴你這個操作的原理是什麼。授之以漁才是書本最重要的東西。 當然可能有些人不是很習慣,會覺得有點雜亂無章。我個人認為,這是方法不對。我推薦先全文瀏覽一遍,然後再上機操作。加入自己的想法,根據後面給的驗證方法進行驗證。事半功倍,甚至可以舉一反三。 當然,這本書還是有缺點的,資料不太系統,我覺得既然是指南,在某一個部分的時候最好把這個命令的所有引數都給出。後面附錄也是一個很全的命令列表。 總的來說,難得的一本好書。通過這本書,我決定完全放棄svn。。git是個好東西啊

《Git權威指南》是Git領域的集大成之作,是一本關於Git的百科全書,在廣度、深度和實戰性上讓同類作品望塵莫及。作者是國內頂尖的版本控制專家和諮詢顧問之一,本書得到了Git官方維護者Junio C Hamano和ITeye創始人範凱(Robbin)先生等數位專家的高度認可和極力推薦,權威性毋庸置疑。

全書一共9篇,共41章和4個附錄,內容幾乎涵蓋了Git的所有方面。第1篇介紹了版本控制工具的演變歷史、Git的各種優點,以及它在3種主流作業系統中的安裝與配置。第2篇和第3篇既是本書的基礎,又是本書的核心,不僅介紹了Git的操作和使用,而且還講解了Git的原理。第2篇詳細講解了個人使用者如何使用Git,包括Git初始化、日常操作、暫存區、物件、重置、檢出、恢復進度、歷史變更、克隆、庫管理等;第3篇詳細講解了Git協議和團隊如何使用Git,包括Git支援的協議、衝突解決、里程碑、分支、遠端版本庫和補丁檔案互動等。第4篇全面介紹了Git的協同模型,即它在實際工作中的使用模式,包括各種經典的Git協同模型、Topgit協同模型、子模組協同模型、子樹合併、Android多版本庫協同、Git與SVN協同模型等。第5篇介紹了Git伺服器的架設,首先講解了HTTP協議、Git協議、SSH協議的使用,然後講解了Gitolite、Gitosis、Gerrit等伺服器的架設方法,最後還講解了Git版本庫的託管。第6篇介紹了版本庫的遷移,包括如何從CVS、SVN、Hg等版本庫遷移到Git,以及Git版本庫整理等方面的內容。第7篇講解了Git的其他應用,包括etckeeper、Gistore等的安裝、配置和使用,以及補丁中的二進位制檔案和雲端儲存等內容。第8篇介紹了Git的跨平臺操作,以及它的鉤子和模板、稀疏檢出和淺克隆、嫁接和替換等重要特性。第9篇是附錄,詳細給出了Git的命令索引,以及CVS、SVN和Hg與Git的比較與命令對照,方便讀者查閱。

目錄  · · · · · ·

前 言 第1篇 初識Git 第1章 版本控制的前世和今生/ 2 1.1 黑暗的史前時代/ 2 1.2 CVS—開啟版本控制大爆發/ 5 1.3 SVN—集中式版本控制集大成者/ 7 1.4 Git—Linus 的第二個偉大作品/ 9 第2章 愛上 Git 的理由/ 11 2.1 每日工作備份/ 11 2.2 異地協同工作/ 12 2.3 現場版本控制/ 13 2.4 避免引入輔助目錄/ 15 2.5 重寫提交說明/ 15 2.6 想吃後悔藥/ 16 2.7 更好用的提交列表/ 17 2.8 更好的差異比較/ 18 2.9 工作進度儲存/ 18 2.10 代理SVN提交實現移動式辦公/ 19 2.11 無處不在的分頁器/ 20 2.12 快/ 21 第3章 Git的安裝和使用/ 22 3.1 在Linux 下安裝和使用 Git/ 22 3.1.1 包管理器方式安裝/ 22 3.1.2 從原始碼進行安裝/ 23 3.1.3 從Git版本庫進行安裝/ 23 3.1.4 命令補齊/ 25 3.1.5 中文支援/ 25 3.2 在Mac OS X 下安裝和使用 Git/ 26 3.2.1 以二進位制釋出包的方式安裝/ 26 3.2.2 安裝 Xcode/ 27 3.2.3 使用 Homebrew 安裝 Git/ 29 3.2.4 從Git原始碼進行安裝/ 29 3.2.5 命令補齊/ 30 3.2.6 其他輔助工具的安裝/ 30 3.2.7 中文支援/ 31 3.3 在Windows 下安裝和使用 Git(Cygwin篇)/ 31 3.3.1 安裝 Cygwin/ 32 3.3.2 安裝 Git/ 36 3.3.3 Cygwin 的配置和使用/ 37 3.3.4 Cygwin 下 Git 的中文支援/ 40 3.3.5 Cygwin 下 Git 訪問 SSH 服務/ 41 3.4 Windows 下安裝和使用 Git(msysGit篇)/ 45 3.4.1 安裝 msysGit/ 46 3.4.2 msysGit 的配置和使用/ 48 3.4.3 msysGit中shell環境的中文支援/ 49 3.4.4 msysGit中Git的中文支援/ 50 3.4.5 使用 SSH 協議/ 51 3.4.6 TortoiseGit 的安裝和使用/ 52 3.4.7 TortoiseGit 的中文支援/ 55 第2篇 Git獨奏 第4章 Git 初始化/ 58 4.1 建立版本庫及第一次提交/ 58 4.2 思考:為什麼工作區根目錄下有一個 .git 目錄/ 60 4.3 思考:git config 命令的各引數有何區別/ 63 4.4 思考:是誰完成的提交/ 65 4.5 思考:隨意設定提交者姓名,是否太不安全/ 67 4.6 思考:命令別名是幹什麼的/ 68 4.7 備份本章的工作成果/ 69 第5章 Git 暫存區/ 70 5.1 修改不能直接提交嗎/ 70 5.2 理解 Git 暫存區(stage)/ 76 5.3 Git Diff 魔法/ 78 5.4 不要使用 git commit -a/ 81 5.5 擱置問題,暫存狀態/ 82 第6章 Git物件/ 83 6.1 Git物件庫探祕/ 83 6.2 思考:SHA1 雜湊值到底是什麼,是如何生成的/ 88 6.3 思考:為什麼不用順序的數字來表示提交/ 90 第7章 Git 重置/ 93 7.1 分支遊標master探祕/ 93 7.2 用 reflog 挽救錯誤的重置/ 95 7.3 深入瞭解git reset命令/ 96 第8章 Git 檢出/ 99 8.1 HEAD 的重置即檢出/ 99 8.2 挽救分離頭指標/ 102 8.3 深入瞭解 git checkout 命令/ 103 第9章 恢復進度/ 105 9.1 繼續暫存區未完成的實踐/ 105 9.2 使用 git stash/ 108 9.3 探祕 git stash/ 109 第10章 Git 基本操作/ 114 10.1 先來合個影/ 114 10.2 刪除檔案/ 114 10.2.1 本地刪除不是真的刪除/ 115 10.2.2 執行 git rm 命令刪除檔案/ 116 10.2.3 命令git add -u快速標記刪除/ 117 10.3 恢復刪除的檔案/ 118 10.4 移動檔案/ 119 10.5 一個顯示版本號的 Hello World/ 120 10.6 使用 git add -i 選擇性新增/ 122 10.7 Hello World 引發的新問題/ 124 10.8 檔案忽略/ 125 10.9 檔案歸檔/ 129 第11章 歷史穿梭/ 130 11.1 圖形工具:gitk/ 130 11.2 圖形工具:gitg/ 131 11.3 圖形工具:qgit/ 135 11.4 命令列工具/ 140 11.4.1 版本表示法:git rev-parse/ 141 11.4.2 版本範圍表示法:git rev-list/ 144 11.4.3 瀏覽日誌:git log/ 146 11.4.4 差異比較:git diff/ 150 11.4.5 檔案追溯:git blame/ 151 11.4.6 二分查詢:git bisect/ 152 11.4.7 獲取歷史版本/ 156 第12章 改變歷史/ 157 12.1 悔棋/ 157 12.2 多步悔棋/ 159 12.3 回到未來/ 161 12.3.1 時間旅行一/ 162 12.3.2 時間旅行二/ 167 12.3.3 時間旅行三/ 171 12.4 丟棄歷史/ 174 12.5 反轉提交/ 177 第13章 Git 克隆/ 179 13.1 雞蛋不裝在一個籃子裡/ 179 13.2 對等工作區/ 180 13.3 克隆生成裸版本庫/ 183 13.4 建立生成裸版本庫/ 184 第14章 Git庫管理/ 187 14.1 物件和引用哪裡去了/ 187 14.2 暫存區操作引入的臨時物件/ 189 14.3 重置操作引入的物件/ 191 14.4 Git管家:git-gc/ 193 14.5 Git管家的自動執行/ 196 第3篇 Git和聲 第15章 Git協議與工作協同/ 200 15.1 Git 支援的協議/ 200 15.2 多使用者協同的本地模擬/ 202 15.3 強制非快進式推送/ 203 15.4 合併後推送/ 207 15.5 禁止非快進式推送/ 208 第16章 衝突解決/ 210 16.1 拉回操作中的合併/ 210 16.2 合併一:自動合併/ 212 16.2.1 修改不同的檔案/ 212 16.2.2 修改相同檔案的不同區域/ 214 16.2.3 同時更改檔名和檔案內容/ 215 16.3 合併二:邏輯衝突/ 217 16.4 合併三:衝突解決/ 218 16.4.1 手工編輯完成衝突解決/ 221 16.4.2 圖形工具完成衝突解決/ 221 16.5 合併四:樹衝突/ 225 16.5.1 手工操作解決樹衝突/ 227 16.5.2 互動式解決樹衝突/ 228 16.6 合併策略/ 230 16.7 合併相關的設定/ 231 第17章 Git 里程碑/ 233 17.1 顯示里程碑/ 234 17.2 建立里程碑/ 236 17.2.1 輕量級里程碑/ 237 17.2.2 帶說明的里程碑/ 238 17.2.3 帶簽名的里程碑/ 239 17.3 刪除里程碑/ 242 17.4 不要隨意更改里程碑/ 243 17.5 共享里程碑/ 243 17.6 刪除遠端版本庫的里程碑/ 246 17.7 里程碑命名規範/ 247 第18章 Git 分支/ 253 18.1 程式碼管理之殤/ 253 18.1.1 釋出分支/ 253 18.1.2 特性分支/ 256 18.1.3 賣主分支/ 257 18.2 分支命令概述/ 258 18.3 “Hello World”開發計劃/ 259 18.4 基於特性分支的開發/ 260 18.4.1 建立分支 user1/getopt/ 261 18.4.2 建立分支 user2/i18n/ 262 18.4.3 開發者 user1 完成功能開發/ 263 18.4.4 將 user1/getopt 分支合併到主線/ 264 18.5 基於釋出分支的開發/ 265 18.5.1 建立釋出分支/ 266 18.5.2 開發者 user1 工作在釋出分支/ 267 18.5.3 開發者 user2 工作在釋出分支/ 268 18.5.4 開發者 user2 合併推送/ 270 18.5.5 釋出分支的提交合併到主線/ 271 18.6 分支變基/ 275 18.6.1 完成 user2/i18n 特性分支的開發/ 275 18.6.2 分支 user2/i18n 變基/ 277 第19章  遠端版本庫/ 284 19.1 遠端分支/ 284 19.2 分支追蹤/ 287 19.3 遠端版本庫/ 290 19.4 PUSH 和 PULL 操作與遠端版本庫/ 292 19.5 里程碑和遠端版本庫/ 294 19.6 分支和里程碑的安全性/ 294 第20章 補丁檔案互動/ 296 20.1 建立補丁/ 296 20.2 應用補丁/ 297 20.3 StGit 和 Quilt/ 300 20.3.1 StGit/ 300 20.3.2 Quilt/ 304 第4篇 Git協同模型 第21章 經典Git協同模型/ 308 21.1 集中式協同模型/ 308 21.1.1 傳統集中式協同模型/ 309 21.1.2 Gerrit 特殊的集中式協同模型/ 310 21.2 金字塔式協同模型/ 311 21.2.1 貢獻者開放只讀版本庫/ 312 21.2.2 以補丁方式貢獻程式碼/ 313 第22章 Topgit 協同模型/ 314 22.1 作者版本控制系統的三個里程碑/ 314 22.2 Topgit 原理/ 316 22.3 Topgit 的安裝/ 317 22.4 Topgit 的使用/ 319 22.5 用Topgit方式改造Topgit/ 330 22.6 Topgit 使用中的注意事項/ 334 第23章 子模組協同模型/ 336 23.1 建立子模組/ 336 23.2 克隆帶子模組的版本庫/ 339 23.3 在子模組中修改和子模組的更新/ 340 23.4 隱性子模組/ 343 23.5 子模組的管理問題/ 345 第24章 子樹合併/ 347 24.1 引入外部版本庫/ 347 24.2 子目錄方式合併外部版本庫/ 349 24.3 利用子樹合併跟蹤上游改動/ 351 24.4 子樹拆分/ 353 24.5 git-subtree 外掛/ 353 第25章 Android 式多版本庫協同/ 356 25.1 關於 repo/ 357 25.2 安裝 repo/ 357 25.3 repo和清單庫的初始化/ 359 25.4 清單庫和清單檔案/ 360 25.5 同步專案/ 361 25.6 建立 Android 程式碼庫本地映象/ 363 25.7 repo 的命令集/ 365 25.8 repo 命令的工作流/ 370 25.9 好東西不能 Android 獨享/ 371 25.9.1 repo+Gerrit 模式/ 371 25.9.2 repo 無稽核模式/ 371 25.9.3 改進的 repo 無稽核模式/ 372 第26章 Git 和 SVN 協同模型/ 378 26.1 使用 git-svn 的一般流程/ 380 26.2 git-svn 的奧祕/ 386 26.2.1 Git 庫配置檔案的擴充套件及分支對映/ 387 26.2.2 Git工作分支和 Subversion 如何對應/ 388 26.2.3 其他輔助檔案/ 390 26.3 多樣的 git-svn 克隆模式/ 390 26.4 共享 git-svn 的克隆庫/ 393 26.5 git-svn 的侷限/ 394 第5篇 搭建Git伺服器 第27章 使用 HTTP 協議/ 398 27.1 啞傳輸協議/ 398 27.2 智慧 HTTP 協議/ 400 27.3 Gitweb 伺服器/ 401 27.3.1 Gitweb的安裝/ 402 27.3.2 Gitweb的配置/ 403 27.3.3 版本庫的 Gitweb 相關設定/ 404 27.3.4 即時Gitweb服務/ 405 第28章 使用 Git 協議/ 406 28.1 Git 協議語法格式/ 406 28.2 Git 服務軟體/ 406 28.3 以 inetd 方式配置執行/ 406 28.4 以 runit 方式配置執行/ 407 第29章 使用 SSH 協議/ 409 29.1 SSH 協議語法格式/ 409 29.2 服務架設方式比較/ 409 29.3 關於 SSH 公鑰認證/ 411 29.4 關於 SSH 主機別名/ 411 第30章 Gitolite 服務架設/ 413 30.1 安裝Gitolite/ 414 30.1.1 伺服器端建立專用賬號/ 414 30.1.2 Gitolite 的安裝/升級/ 415 30.1.3 關於 SSH 主機別名/ 417 30.1.4 其他的安裝方法/ 418 30.2 管理 Gitolite/ 419 30.2.1 管理員克隆 gitolite-admin 管理庫/ 419 30.2.2 增加新使用者/ 420 30.2.3 更改授權/ 422 30.3 Gitolite 授權詳解/ 423 30.3.1 授權檔案的基本語法/ 423 30.3.2 定義使用者組和版本庫組/ 424 30.3.3 版本庫ACL/ 424 30.3.4 Gitolite 授權機制/ 426 30.4 版本庫授權案例/ 427 30.4.1 對整個版本庫進行授權/ 427 30.4.2 萬用字元版本庫的授權/ 428 30.4.3 使用者自己的版本庫空間/ 429 30.4.4 對引用的授權:傳統模式/ 430 30.4.5 對引用的授權:擴充套件模式/ 430 30.4.6 對引用的授權:禁用規則的使用/ 431 30.4.7 使用者分支/ 431 30.4.8 對路徑的寫授權/ 432 30.5 建立新版本庫/ 432 30.5.1 在配置檔案中出現的版本庫,即時生成/ 433 30.5.2 萬用字元版本庫,管理員通過推送建立/ 434 30.5.3 直接在伺服器端建立/ 435 30.6 對 Gitolite 的改進/ 435 30.7 Gitolite 功能拓展/ 436 30.7.1 版本庫映象/ 436 30.7.2 Gitweb 和 Git daemon 支援/ 438 30.7.3 其他功能拓展和參考/ 439 第31章 Gitosis 服務架設/ 441 31.1 安裝 Gitosis/ 442 31.1.1 Gitosis 的安裝/ 442 31.1.2 伺服器端建立專用賬號/ 442 31.1.3 Gitosis 服務初始化/ 443 31.2 管理 Gitosis/ 443 31.2.1 管理員克隆 gitolit-admin 管理庫/ 443 31.2.2 增加新使用者/ 444 31.2.3 更改授權/ 446 31.3 Gitosis 授權詳解/ 447 31.3.1 Gitosis 預設設定/ 447 31.3.2 管理版本庫 gitosis-admin/ 447 31.3.3 定義使用者組和授權/ 448 31.3.4 Gitweb 整合/ 449 31.4 建立新版本庫/ 449 31.5 輕量級管理的 Git 服務/ 450 第32章 Gerrit 程式碼稽核伺服器/ 452 32.1 Gerrit 的實現原理/ 452 32.2 架設 Gerrit 的伺服器/ 456 32.3 Gerrit 的配置檔案/ 461 32.4 Gerrit 的資料庫訪問/ 462 32.5 立即註冊為 Gerrit 管理員/ 464 32.6 管理員訪問 SSH 的管理介面/ 467 32.7 建立新專案/ 468 32.8 從已有的 Git 庫建立專案/ 472 32.9 定義評審工作流/ 473 32.10 Gerrit 評審工作流實戰/ 477 32.10.1 開發者在本地版本庫中工作/ 477 32.10.2 開發者向稽核伺服器提交/ 478 32.10.3 稽核評審任務/ 478 32.10.4 評審任務沒有通過測試/ 480 32.10.5 重新提交新的補丁集/ 482 32.10.6 新修訂集通過評審/ 483 32.10.7 從遠端版本庫更新/ 485 32.11 更多 Gerrit 參考/ 486 第33章 Git 版本庫託管/ 487 33.1 Github/ 487 33.2 Gitorious/ 489 第6篇 遷移到Git 第34章 CVS版本庫到Git的遷移/ 492 34.1 安裝cvs2svn(含 cvs2git)/ 492 34.1.1 Linux下cvs2svn的安裝/ 492 34.1.2 Mac OS X 下 cvs2svn 的安裝/ 493 34.2 版本庫轉換的準備工作/ 494 34.2.1 版本庫轉換注意事項/ 494 34.2.2 檔名亂碼問題/ 494 34.2.3 提交說明亂碼問題/ 494 34.3 版本庫轉換/ 496 34.3.1 配置檔案解說/ 496 34.3.2 執行cvs2git完成轉換/ 500 34.4 遷移後的版本庫檢查/ 501 第35章 更多版本控制系統的遷移/ 502 35.1 SVN版本庫到Git的遷移/ 502 35.2 Hg 版本庫到Git的遷移/ 503 35.3 通用版本庫遷移/ 505 35.4 Git 版本庫整理/ 511 35.4.1 環境變數過濾器/ 513 35.4.2 樹過濾器/ 513 35.4.3 暫存區過濾器/ 513 35.4.4 父節點過濾器/ 514 35.4.5 提交說明過濾器/ 514 35.4.6 提交過濾器/ 515 35.4.7 里程碑名字過濾器/ 516 35.4.8 子目錄過濾器/ 516 第7篇 Git的其他應用 第36章 etckeeper/ 518 36.1 安裝 etckeeper/ 518 36.2 配置 etckeeper/ 519 36.3 使用 etckeeper/ 519 第37章 Gistore/ 520 37.1 Gistore 的安裝/ 520 37.1.1 軟體依賴/ 520 37.1.2 從原始碼安裝 Gistore/ 521 37.1.3 用 easy_install 安裝/ 521 37.2 Gistore 的使用/ 522 37.2.1 建立並初始化備份庫/ 522 37.2.2 Gistore 的配置檔案/ 523 37.2.3 Gistore 的備份項管理/ 524 37.2.4 執行備份任務/ 525 37.2.5 檢視備份日誌/ 525 37.2.6 檢視及恢復備份資料/ 527 37.2.7 備份回滾及設定/ 528 37.2.8 註冊備份任務別名/ 529 37.2.9 自動備份:crontab/ 529 37.3 Gistore 雙機備份/ 529 第38章 補丁中的二進位制檔案/ 531 38.1 Git 版本庫中二進位制檔案變更的支援/ 531 38.2 對非 Git 版本庫中二進位制檔案變更的支援/ 535 38.3 其他工具對 Git 擴充套件補丁檔案的支援/ 536 第39章 雲端儲存/ 538 39.1 現有云儲存的問題/ 538 39.2 Git 式雲端儲存暢想/ 539 第8篇 Git雜談 第40章 跨平臺操作 Git/ 542 40.1 字符集問題/ 542 40.2 檔名大小寫問題/ 543 40.3 換行符問題/ 545 第41章 Git 的其他特性/ 549 41.1 屬性/ 549 41.1.1 屬性定義/ 549 41.1.2 屬性檔案及優先順序/ 550 41.1.3 常用屬性介紹/ 552 41.2 鉤子和模板/ 557 41.2.1 Git 鉤子/ 557 41.2.2 Git 模板/ 562 41.3 稀疏檢出和淺克隆/ 563 41.3.1 稀疏檢出/ 563 41.3.2 淺克隆/ 566 41.4 嫁接和替換/ 568 41.4.1 提交嫁接/ 568 41.4.2 提交替換/ 568 41.5 Git 評註/ 570 41.5.1 評註的奧祕/ 570 41.5.2 評註相關命令/ 573 41.5.3 評註相關配置/ 574 第9篇 附錄 附錄A  Git 命令索引/ 576 A.1 常用的Git命令/ 576 A.2 物件庫操作相關命令/ 578 A.3 引用操作相關命令/ 578 A.4 版本庫管理相關命令/ 579 A.5 資料傳輸相關命令/ 579 A.6 郵件相關命令/ 580 A.7 協議相關命令/ 580 A.8 版本庫轉換和互動相關命令/ 581 A.9 合併相關的輔助命令/ 581 A.10 雜項/ 582 附錄B Git 與 CVS 面對面/ 583 B.1 面對面訪談錄/ 583 B.2 Git 和CVS 命令對照/ 585 附錄C Git 與 SVN 面對面/ 587 C.1 面對面訪談錄/ 587 C.2  Git 和SVN 命令對照/ 589 附錄D Git 與 Hg 面對面/ 592 D.1 面對面訪談錄/ 592 D.2 Git和Hg 命令對照/ 593

需要IT程式設計經典書籍資源大合集百度網盤連結的聯絡qq 2057904338