本書從Git的基本知識和操作方法入手,詳細(xì)介紹了GitHub的各種功能,GitHub與其他工具或服務(wù)的協(xié)作,使用GitHub的開發(fā)流程以及如何將GitHub引入到企業(yè)中。在講解GitHub的代表功能Pull Request時,本書專門搭建了供各位讀者實踐的倉庫,邀請各位讀者進(jìn)行Pull Request并共同維護(hù)。
作者簡介 大塚弘記 將敏捷軟件開發(fā)導(dǎo)入開發(fā)現(xiàn)場的領(lǐng)軍人物,以顧問身份就Web應(yīng)用的開發(fā)及服務(wù)指導(dǎo)過多家企業(yè)和團(tuán)隊。曾為多家企業(yè)和團(tuán)隊導(dǎo)入GitHub,在建立一天之內(nèi)多次部署的開發(fā)體制方面擁有豐富經(jīng)驗。
目錄: 第1章 歡迎來到GitHub的世界 1 1.1 什么是GitHub 2 GitHub公司與octocat 2 并不只是Git倉庫的托管服務(wù) 3 GitHub的使用情況 3 Column 專欄:GitHub與Git的區(qū)別 4 1.2 使用GitHub會帶來哪些變化 4 協(xié)作形式變化 4 在開發(fā)者之間引發(fā)化學(xué)反應(yīng)的Pull Request 5 對特定用戶進(jìn)行評論 6 GitHub Flavored Markdown 7 Column 專欄:還可以這樣寫!! 7 能看到更多其他團(tuán)隊的軟件 7 與開源軟件相同的開發(fā)模式 8 1.3 社會化編程 9 1.4 為什么需要社會化編程 10 不要閉目塞聽,要接觸不同的文化 10 會寫代碼的程序員更受青睞 11 GitHub最大的特征是“面向人” 11 1.5 GitHub提供的主要功能 12 Git倉庫 12 Organization 12 Issue 13 Wiki 13 Pull Request 13 Column 專欄:GitHub上受到矚目的軟件 14 1.6 小結(jié) 14 參考資料 14 第2章 Git的導(dǎo)入 17 2.1 誕生背景 18 2.2 什么是版本管理 18 集中型與分散型 19 集中型 19 分散型 19 集中型與分散型哪個更好 20 2.3 安裝 21 Mac與Linux 21 Windows 21 組件的選擇 22 設(shè)置環(huán)境變量 22 換行符的處理 23 Git Bash 23 本書所用的環(huán)境 24 2.4 初始設(shè)置 24 設(shè)置姓名和郵箱地址 24 提高命令輸出的可讀性 25 2.5 小結(jié) 25 第3章 使用GitHub的前期準(zhǔn)備 27 3.1 使用前的準(zhǔn)備 28 創(chuàng)建賬戶 28 設(shè)置頭像 29 設(shè)置SSH Key 29 添加公開密鑰 30 使用社區(qū)功能 31 3.2 實際動手使用 31 創(chuàng)建倉庫 31 Repository name 32 Description 32 Public、Private 32 Initialize this repository with a README 32 Add .gitignore 33 Add a license 33 連接倉庫 33 README.md 33 GitHub Flavored Markdown 34 公開代碼 34 clone已有倉庫 34 編寫代碼 35 提交 36 Column 專欄:公開時的許可協(xié)議 37 進(jìn)行push 37 3.3 小結(jié) 38 第4章 通過實際操作學(xué)習(xí)Git 39 4.1 基本操作 40 git init——初始化倉庫 40 git status——查看倉庫的狀態(tài) 40 git add——向暫存區(qū)中添加文件 41 git commit——保存?zhèn)}庫的歷史記錄 42 記述一行提交信息 42 記述詳細(xì)提交信息 42 中止提交 43 查看提交后的狀態(tài) 43 git log——查看提交日志 43 只顯示提交信息的第一行 44 只顯示指定目錄、文件的日志 44 顯示文件的改動 45 git diff——查看更改前后的差別 45 查看工作樹和暫存區(qū)的差別 45 查看工作樹和最新提交的差別 46 4.2 分支的操作 47 git branch——顯示分支一覽表 48 git checkout -b——創(chuàng)建、切換分支 48 切換到feature-A分支并進(jìn)行提交 48 切換到master分支 49 切換回上一個分支 50 特性分支 50 主干分支 51 git merge——合并分支 51 git log --graph——以圖表形式查看分支 52 4.3 更改提交的操作 53 git reset——回溯歷史版本 53 回溯到創(chuàng)建feature-A分支前 53 創(chuàng)建fix-B分支 54 推進(jìn)至feature-A分支合并后的狀態(tài) 55 消除沖突 56 查看沖突部分并將其解決 57 提交解決后的結(jié)果 57 git commit --amend——修改提交信息 58 git rebase -i——壓縮歷史 59 創(chuàng)建feature-C分支 59 修正拼寫錯誤 60 更改歷史 61 合并至master分支 63 4.4 推送至遠(yuǎn)程倉庫 63 git remote add——添加遠(yuǎn)程倉庫 64 git push——推送至遠(yuǎn)程倉庫 64 推送至master分支 64 推送至master以外的分支 65 4.5 從遠(yuǎn)程倉庫獲取 65 git clone——獲取遠(yuǎn)程倉庫 65 獲取遠(yuǎn)程倉庫 65 獲取遠(yuǎn)程的feature-D分支 66 向本地的feature-D分支提交更改 67 推送feature-D分支 67 git pull——獲取最新的遠(yuǎn)程倉庫分支 67 4.6 幫助大家深入理解Git的資料 68 Pro Git 68 LearnGitBranching 69 tryGit 69 4.7 小結(jié) 70 第5章 詳細(xì)解說GitHub的功能 71 5.1 鍵盤快捷鍵 72 5.2 工具欄 73 關(guān)于UI 73 1LOGO 73 2Notifications 73 3 搜索窗口 73 4Explore 73 5Gist 74 6Blog 74 7Help 74 8 頭像、用戶名 74 9 Create a new 74 Account settings 75 Sign out 75 5.3 控制面板 75 關(guān)于UI 75 、貼ews Feed 76 、赑ull Requests 76 、跧ssues 76 ④Stars 76 、軧roadcast 76 ⑥Repositories you contribute to 76 、遈our Repositories 76 5.4 個人信息 77 關(guān)于UI 77 1 用戶信息 77 2Popular Repositories 78 3Repositories contributed to 78 4Public contributions 78 5Contribution Activity 78 6Repositories 78 7Public Activity 79 5.5 倉庫 80 關(guān)于UI 80 、儆脩裘ńM織名)/倉庫名 80 、赪atch/Star/Fork 80 、跜ode 81 、躀ssue 81 ⑤Pull Requests 81 、轜iki 82 、逷ulse 82 ⑧Graphs 82 、酦etwork 82 ⑩Settings 82 ?SSH clone URL 82 ?Clone in Desktop 82 ?Download ZIP 83 acommits 83 bbranches 83 creleases 83 dcontributors 83 eCompare & review 83 fbranch 83 gpath 84 hFork this project and Create a new file 84 ifiles 84 文件的相關(guān)操作 84 Column專欄:通過部分名稱搜索文件 85 查看差別 85 查看分支間的差別 85 查看與幾天前的差別 86 查看與指定日期之間的差別 87 5.6 Issue 87 簡潔且表現(xiàn)力豐富的描述方法 88 語法高亮 89 添加圖片 90 添加標(biāo)簽以便整理 90 添加里程碑以便管理 91 Column 專欄:了解貢獻(xiàn)時的規(guī)則! 92 Tasklist語法 92 通過提交信息操作Issue 93 在相關(guān)Issue中顯示提交 93 Close Issue 93 將特定的Issue轉(zhuǎn)換為Pull Request 94 5.7 Pull Request 94 Column 專欄:獲取diff格式與patch格式的文件 96 Conversation 96 Column 專欄:引用評論 96 Commits 97 Column 專欄:在評論中應(yīng)用表情 98 Files Changed 98 5.8 Wiki 99 Pages 100 History 101 Column 專欄:在Wiki中顯示側(cè)邊欄 101 5.9 Pulse 102 active pull requests 103 active issue 103 commits 104 Releases published 104 Unresolved Conversations 104 5.10 Graphs 105 Contributors 105 Commit Activity 106 Code Frequency 106 Punchcard 108 5.11 Network 108 5.12 Settings 109 Options 109 ①Settings 109 、贔eatures 110 、跥itHub Pages 111 、蹹anger Zone 111 Collaborators 111 Webhooks & Services 112 Deploy Keys 112 5.13 Notifications 112 5.14 其他功能 114 GitHub Pages 114 GitHub Jobs 114 GitHub Enterprise 114 GitHub API 115 5.15 小結(jié) 115 Column 專欄:在Mac的通知中心查看GitHub的Notifications 115 第6章 嘗試Pull Request 117 6.1 Pull Request的概要 118 什么是Pull Request 118 Pull Request的流程 118 6.2 發(fā)送Pull Request前的準(zhǔn)備 119 查看要修正的源代碼 120 Fork 120 clone 120 branch 121 為何要在特性分支中進(jìn)行作業(yè) 121 確認(rèn)分支 121 創(chuàng)建特性分支 121 添加代碼 122 提交修改 122 創(chuàng)建遠(yuǎn)程分支 123 6.3 發(fā)送Pull Request 123 6.4 讓Pull Request更加有效的方法 126 在開發(fā)過程中發(fā)送Pull Request進(jìn)行討論 126 明確標(biāo)出“正在開發(fā)過程中” 127 不進(jìn)行Fork直接從分支發(fā)送Pull Request 128 6.5 倉庫的維護(hù) 128 倉庫的Fork與clone 129 給原倉庫設(shè)置名稱 129 獲取最新數(shù)據(jù) 130 6.6 小結(jié) 130 第7章 接收Pull Request 131 7.1 采納Pull Request的方法 132 7.2 采納Pull Request前的準(zhǔn)備 133 代碼審查 133 查看圖片的差別 134 2-up 134 Swipe 135 Onion Skin 135 Difference 136 在本地開發(fā)環(huán)境中反映Pull Request的內(nèi)容 136 將接收方的本地倉庫更新至最新狀態(tài) 136 獲取發(fā)送方的遠(yuǎn)程倉庫 137 創(chuàng)建用于檢查的分支 138 合并 138 刪除分支 139 Column 專欄:如何提升代碼管理技術(shù) 139 7.3 采納Pull Request 139 合并到主分支 140 push修改內(nèi)容 141 7.4 小結(jié) 142 Column 專欄:請協(xié)助我們共同創(chuàng)建互相學(xué)習(xí)的場所 142 第8章 與GitHub相互協(xié)作的工具及服務(wù) 143 8.1 hub命令 144 概要 144 安裝 144 安裝 145 確認(rèn)運行情況 145 設(shè)置別名 145 實現(xiàn)shell上的功能補全 146 ~/.config/hub 146 命令 146 hub clone 146 hub remote add 147 hub fetch 147 hub cherry-pick 147 hub fork 148 hub pull-request 148 hub checkout 148 hub create 149 hub push 149 hub browse 150 hub compare 150 Column 專欄:讓GitHub Enterprise支持hub命令 151 8.2 Travis CI 151 概要 151 實際嘗試 152 編寫配置文件 152 檢測配置文件是否有問題 152 與GitHub集成 153 將Travis CI的結(jié)果添加至README.md 155 8.3 Coveralls 156 概要 156 安裝 157 注冊 157 添加對象倉庫 158 編寫配置文件 158 添加gem 159 查看報告 160 8.4 Gemnasium 160 8.5 Code Climate 161 8.6 Jenkins 162 概要 162 安裝 164 創(chuàng)建bot賬戶 165 bot賬戶的權(quán)限設(shè)置 165 對象為個人賬戶時 165 對象為Organization賬戶時 165 檢查設(shè)置 167 給Jenkins設(shè)置SSH密鑰 167 初次使用Jenkins時 167 已經(jīng)在使用Jenkins時 168 GitHub pull request builder plugin的安裝 169 Git plugin的設(shè)置 170 Github Pull Requests Builder的設(shè)置 170 Github server api URL 171 Access Token 171 Admin list 172 job的創(chuàng)建與設(shè)置 172 GitHub project 172 源碼管理 172 構(gòu)建觸發(fā)器 173 構(gòu)建 174 通知結(jié)果 174 測試執(zhí)行中的狀態(tài) 175 Failed 175 All is well 175 commit status 175 通過評論進(jìn)行控制 176 執(zhí)行任務(wù) 176 添加至White list 176 重新執(zhí)行任務(wù) 176 變更指定評論 177 8.7 小結(jié) 177 Column 專欄:用Coderwall生成GitHub上的個人信息 178 第9章 使用GitHub的開發(fā)流程 179 9.1 團(tuán)隊使用GitHub時的注意事項 180 一切從簡 180 項目管理工具與GitHub的區(qū)別 180 項目管理工具與GitHub相異的原因 181 不Fork倉庫的方法 182 9.2 GitHub Flow——以部署為中心的開發(fā)模式 183 9.3 GitHub Flow的流程 184 隨時部署,沒有發(fā)布的概念 184 進(jìn)行新的作業(yè)時要從master分支創(chuàng)建新分支 185 在新創(chuàng)建的分支中進(jìn)行提交 186 定期push 186 使用Pull Request 187 務(wù)必讓其他開發(fā)者進(jìn)行審查 187 合并后立刻部署 187 9.4 實踐GitHub Flow的前提條件 188 部署作業(yè)完全自動化 188 使用部署工具 189 通過Web界面進(jìn)行部署的工具 189 導(dǎo)入開發(fā)時的注意事項 190 重視測試 190 讓測試自動化 190 編寫測試代碼,通過全部測試 190 維護(hù)測試代碼 190 9.5 模擬體驗GitHub Flow 191 Fizzbuzz的說明 191 添加新功能 192 創(chuàng)建新的分支 192 如果尚未clone倉庫 192 如果之前clone過倉庫 193 創(chuàng)建特性分支 193 實現(xiàn)新功能 194 創(chuàng)建Pull Request 196 接收反饋 196 修正縮進(jìn) 197 添加測試 199 培育Pull Request 202 Pull Request被合并 202 9.6 團(tuán)隊實踐GitHub Flow時的幾點建議 203 減小Pull Request的體積 204 準(zhǔn)備可供試運行的環(huán)境 204 不要讓Pull Request中有太多反饋 205 不要積攢Pull Request 206 9.7 GitHub Flow的小結(jié) 206 9.8 Git Flow——以發(fā)布為中心的開發(fā)模式 207 便于理解的標(biāo)準(zhǔn)流程 207 有時顯得過于復(fù)雜 209 9.9 導(dǎo)入Git Flow前的準(zhǔn)備 209 安裝git-flow 209 Mac下的安裝 209 Linux下的安裝 210 確認(rèn)運行狀況 210 倉庫的初始設(shè)置 210 創(chuàng)建倉庫 210 進(jìn)行g(shù)it flow的初始設(shè)置 211 在遠(yuǎn)程倉庫中也創(chuàng)建develop分支 212 9.10 模擬體驗Git Flow 212 master分支與develop分支的區(qū)別 213 master分支 213 develop分支 213 在feature中進(jìn)行的工作 213 創(chuàng)建分支 214 在分支中進(jìn)行作業(yè) 215 發(fā)送Pull Request 216 通過代碼審查提高代碼質(zhì)量 217 更新本地的develop分支 219 在release分支中進(jìn)行的工作 220 Column 專欄:設(shè)置默認(rèn)分支 220 創(chuàng)建分支 221 分支內(nèi)的工作 222 進(jìn)行發(fā)布與合并 222 查看版本標(biāo)簽 224 更新到遠(yuǎn)程倉庫 225 在hotfix分支中進(jìn)行的工作 226 創(chuàng)建分支 226 創(chuàng)建標(biāo)簽和進(jìn)行發(fā)布 228 從hotfix分支合并至develop分支 230 9.11 Git Flow的小結(jié) 232 Column 專欄:版本號的分配規(guī)則 232 第10章 將GitHub應(yīng)用到企業(yè) 233 10.1 將世界標(biāo)準(zhǔn)的開發(fā)環(huán)境引入企業(yè)現(xiàn)場 234 企業(yè)引入GitHub的好處 234 使用Organization 235 確認(rèn)Github的安全性 235 注意維護(hù)時間 235 查看故障信息 236 10.2 GitHub Enterprise 237 概述 238 引入的好處 238 引入的弊端 239 適合引入GitHub Enterprise的幾種情況 239 源代碼不可外傳 239 Column 專欄:將GitHub的倉庫作為Subversion倉庫使用 240 希望維護(hù)與故障時間可控 240 10.3 能實現(xiàn)Git托管的軟件 241 Column 專欄:Bitbucket 241 10.4 小結(jié) 242 附錄A 支持GitHub的GUI客戶端 243 A.1 GitHub for Mac,GitHub for Windows 244 A.2 SourceTree 246 附錄B 通過Gist輕松實現(xiàn)代碼共享 247 B.1 Gist的特點 248 B.2 創(chuàng)建Gist 248 UI講解 249 1 Gist description 249 2 name this file 249 3 language 250 4 ACE Editor 250 5 文件 250 6 Add another File 251 7 Create Secret Gist 251 8 Create Public Gist 251 B.3 查看Gist 252 Gist 的菜單 252 、貵ist Detail 253 、赗evisions 253 ③Download Gist 253 、蹸lone this gist 253 ⑤Embed this gist 253 、轑ink to this gist 253 文件的菜單 254 B.4 Your Gists 254 B.5 小結(jié) 255
|