Git高效實踐
吳子俊
相關主題
商品描述
目錄大綱
目 錄
第1章 Git概述 1
1.1 項目協同開發 1
1.2 Git簡介 2
1.3 集中式與分佈式版本控制
系統 3
1.3.1 集中式版本控制系統 3
1.3.2 分佈式版本控制系統 4
1.4 Git的使用流程 5
1.4.1 本地倉庫 6
1.4.2 協同開發 7
1.5 創建 Git 倉庫 7
1.5.1 初始化Git倉庫 7
1.5.2 Git的幫助文檔 9
1.6 Git的配置 10
1.6.1 Git的配置等級 11
1.6.2 Git的配置分類 12
1.6.3 讀取Git配置 12
1.6.4 設置Git配置 13
1.6.5 Git的初始化配置 15
第2章 Git的基本使用 17
2.1 Git基本操作命令 17
2.2 暫存區的概念 21
2.2.1 暫存區的工作流程 21
2.2.2 查看暫存區 22
2.3 Git的工作空間狀態 24
2.3.1 nothing to commit 24
2.3.2 Untracked files 25
2.3.3 Changes to be
committed 26
2.3.4 Changes not staged for
commit 27
第3章 Git其他常用命令 29
3.1 diff命令——文件對比 29
3.1.1 工作空間與暫存區文件
對比 29
3.1.2 版本庫與暫存區文件
對比 30
3.2 rm命令——文件刪除 31
3.2.1 普通方式刪除 31
3.2.2 git rm命令刪除 33
3.3 mv命令——文件改名 36
3.3.1 普通方式重命名 37
3.3.2 使用git mv改名 38
3.4 log命令——日誌查詢 39
3.4.1 git log命令的使用 40
3.4.2 格式化日誌 41
3.4.3 日期格式化 42
3.5 Git文件忽略 44
3.5.1 忽略文件的使用 44
3.5.2 強制追蹤 45
3.5.3 忽略規則的優先級 46
3.5.4 忽略規則的匹配語法 46
第4章 Git底層對象 49
4.1 Git對象的概念與介紹 49
4.2 Blob對象 50
4.2.1 Blob對象簡介 50
4.2.2 Blob對象的使用 50
4.2.3 Blob的存儲方式 53
4.3 Tree對象 53
4.3.1 Tree對象簡介 53
4.3.2 暫存區與Tree對象 54
4.3.3 生成Tree對象 54
4.3.4 讀取Tree對象 56
4.4 Commit對象 62
4.4.1 Commit對象簡介 62
4.4.2 生成Commit對象 63
4.4.3 指定父級Commit對象
提交 65
4.5 Tag對象 66
4.5.1 Tag對象簡介 66
4.5.2 Tag對象的使用 66
第5章 Git命令原理 70
5.1 add命令原理 70
5.2 commit命令原理 71
5.3 文件刪除原理 73
5.3.1 普通方式刪除 74
5.3.2 git rm命令原理 76
5.4 文件改名原理 78
5.4.1 普通方式改名 78
5.4.2 git mv命令原理 80
第6章 Git分支的使用 83
6.1 Git分支概述 83
6.1.1 Git分支簡介 83
6.1.2 Git分支原理 84
6.2 分支的使用 86
6.2.1 創建分支 87
6.2.2 查看分支 88
6.2.3 刪除分支 88
6.3 切換分支 89
6.3.1 checkout切換分支 89
6.3.2 switch切換分支 91
6.4 切換分支原理 92
6.4.1 影響工作空間 94
6.4.2 影響暫存區 97
6.4.3 分離頭指針 100
6.5 checkout命令的其他功能 102
6.5.1 撤銷修改 102
6.5.2 強制切換 103
6.6 Git的分支狀態存儲 104
6.6.1 git stash命令 104
6.6.2 Git存儲的基本使用 105
6.6.3 Git存儲的其他用法 109
6.6.4 Git存儲與暫存區 113
6.6.5 Git存儲的原理 114
6.7 工作樹的使用 118
6.7.1 工作樹簡介 118
6.7.2 git worktree的使用 119
6.7.3 git worktree詳細
用法 121
第7章 分支合並 123
7.1 分支開發路線 123
7.1.1 同軸開發路線 123
7.1.2 分叉開發路線 125
7.2 分支合並的分類 126
7.2.1 快進式合並分支 126
7.2.2 典型式合並分支 129
7.3 Git的代碼沖突 132
7.3.1 代碼沖突的分類與
特點 132
7.3.2 快進式合並代碼
沖突 133
7.3.3 典型式合並代碼
沖突 138
7.4 Git的代碼沖突原理 142
7.4.1 兩路合並算法 142
7.4.2 三路合並算法 143
7.4.3 遞歸三路合並 149
7.5 git merge命令詳解 153
7.5.1 git merge其他用法 153
7.5.2 git merge的可選
參數 155
7.5.3 分支合並的策略 158
7.6 git rebase命令 161
7.6.1 git rebase命令簡介 161
7.6.2 git rebase與git merge 162
7.6.3 交互式Rebase 166
7.7 git cherry-pick命令 175
7.7.1 git cherry-pick命令
簡介 176
7.7.2 cherry-pick與merge 176
第8章 Git數據恢復與還原 183
8.1 Git的還原——restore命令 183
8.1.1 還原工作空間 184
8.1.2 還原暫存區 184
8.1.3 同時還原暫存區和
工作空間 186
8.2 修正提交——amend命令 187
8.2.1 提交日誌修正 187
8.2.2 提交內容修正 188
8.2.3 提交文件修正 189
8.3 Git的數據回退——
reset命令 190
8.3.1 回退HEAD指針 190
8.3.2 回退暫存區 193
8.3.3 回退工作空間 195
第9章 遠程協同開發 197
9.1 遠程倉庫簡介 197
9.1.1 GitHub 197
9.1.2 Gitee 198
9.1.3 其他托管平臺 198
9.2 發布遠程倉庫 200
9.2.1 協同開發工作流程 201
9.2.2 創建遠程倉庫 202
9.2.3 推送倉庫 203
9.3 協同開發相關命令 206
9.3.1 remote命令的使用 206
9.3.2 clone命令的使用 207
9.3.3 fetch命令的使用 208
9.3.4 pull命令的使用 211
9.4 遠程跟蹤分支 212
9.4.1 遠程分支的創建 213
9.4.2 遠程跟蹤分支的
創建 215
9.5 遠程協作代碼沖突 221
9.5.1 分支合並的情況 221
9.5.2 遠程協作的情況 227
9.6 用戶信息的配置 233
第10章 多人協同開發 236
10.1 多人協同開發的場景 236
10.1.1 場景1——單人
開發 236
10.1.2 場景2——多人共同
開發 237
10.1.3 場景3——多人獨立
開發 238
10.2 進行多人協同 238
10.2.1 模擬多賬號協同
開發 239
10.2.2 Pull Request的
使用 243
第11章 TortoiseGit圖形化工具 250
11.1 TortoiseGit簡介 250
11.2 TortoiseGit的基本使用 252
11.2.1 創建倉庫 252
11.2.2 添加 253
11.2.3 提交 254
11.2.4 對比 255
11.2.5 改名 256
11.2.6 刪除 258
11.2.7 日誌 259
11.2.8 標簽的使用 260
11.2.9 文件忽略 261
11.3 TortoiseGit數據恢復 262
11.3.1 restore數據還原 262
11.3.2 amend提交修正 264
11.3.3 reset數據回退 265
11.4 TortoiseGit操作分支 271
11.4.1 創建分支 272
11.4.2 切換分支 273
11.4.3 合並分支 274
11.4.4 分支合並解決
沖突 275
11.5 分支狀態存儲 278
11.5.1 使用存儲 278
11.5.2 查看存儲 280
11.5.3 讀取存儲 280
11.5.4 刪除存儲 281
11.6 TortoiseGit分支高級操作 282
11.6.1 rebase操作 282
11.6.2 cherry-pick操作 286
11.7 TortoiseGit協同開發 290
11.7.1 remote 290
11.7.2 push 292
11.7.3 clone 293
11.7.4 fetch 294
11.7.5 pull 295
11.7.6 模擬協同開發
沖突 296
第12章 IntelliJ IDEA集成Git插件的
使用 299
12.1 Git插件的基本使用 299
12.1.1 IDEA綁定Git
插件 299
12.1.2 提交項目 301
12.1.3 添加忽略文件 302
12.1.4 比較 306
12.1.5 改名 307
12.1.6 刪除 307
12.1.7 日誌 307
12.1.8 標簽 309
12.2 Git插件數據恢復 310
12.2.1 restore數據還原 311
12.2.2 amend提交修正 311
12.2.3 reset數據回退 312
12.3 分支的操作 315
12.3.1 創建分支 315
12.3.2 切換分支 317
12.3.3 合並分支 317
12.3.4 分支合並解決沖突 318
12.4 分支狀態存儲 321
12.5 分支高級操作 322
12.5.1 rebase操作 322
12.5.2 cherry-pick操作 325
12.6 協同開發 327
12.6.1 remote 327
12.6.2 push 328
12.6.3 clone 329
12.6.4 fetch 330
12.6.5 pull 332
12.6.6 模擬協同開發沖突 334
第13章 協同開發命令詳細用法 336
13.1 push命令 336
13.1.1 push命令的使用
方式 336
13.1.2 push命令的常用
參數 339
13.1.3 push命令常用參數
演示 340
13.1.4 上游分支 342
13.1.5 修剪分支 345
13.1.6 強制推送 346
13.2 fetch命令 348
13.2.1 fetch命令的常用
參數 348
13.2.2 fetch命令常用參數
演示 349
13.2.3 強制獲取 351
13.3 pull命令 352
13.3.1 pull命令的常用
參數 353
13.3.2 pull命令常用參數
演示 353
13.3.3 pull變基操作 356
13.3.4 強制拉取 360
第14章 Git補丁 363
14.1 Git補丁語法 363
14.2 git apply應用補丁 364
14.2.1 git apply使用示例 364
14.2.2 git apply舊版本
問題 368
14.3 git format-patch生成補丁 368
14.4 git am應用補丁 371
14.4.1 git am使用示例 371
14.4.2 git am解決沖突 372
第15章 Git工作流 375
15.1 Git Flow中的分支 375
15.2 使用Git Flow模擬開發 377
15.3 使用Git Flow Script開發 380
第16章 Git鉤子 387
16.1 鉤子的作用 387
16.1.1 客戶端鉤子 387
16.1.2 服務端鉤子 388
16.2 使用鉤子 388
16.2.1 編寫pre-commit
鉤子 389
16.2.2 編寫commit-msg
鉤子 390
16.2.3 採用Java實現
鉤子 391
第17章 Git的配置項 393
17.1 git config命令 393
17.1.1 查詢信息類 393
17.1.2 作用域類 394
17.1.3 屬性操作類 396
17.2 .git目錄詳解 401
17.2.1 .git目錄中文件夾的
說明 401
17.2.2 .git目錄中文件的
說明 404
17.3 Git客戶端配置 404
17.3.1 user配置項 405
17.3.2 alias配置項 405
17.3.3 credential配置項 407
17.3.4 merge配置項 412
17.3.5 push配置項 414
17.3.6 其他配置項 416
17.4 Git服務端配置 418
17.4.1 receive配置項 419
17.4.2 http配置項 420
17.4.3 gc配置項 421