當前位置:編程學習大全網 - 源碼下載 - Git權威指南的目錄

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

  • 上一篇:敵對領域-雷神戰爭哪裏有遊戲下載啊
  • 下一篇:風力發電機組測試有哪些標準,如何進行測試?
  • copyright 2024編程學習大全網