編輯推薦
與全世界程序員分享你的代碼!
1.代碼審查不到位,審查效率低下
2.隻有編程者本人能看懂的代碼直接被部署至正式環境中
3.因低級代碼錯誤導緻BUG頻繁齣現
4.沒有機會和其他人互相交流代碼,共享知識
○ 沒有一個簡單高效、能在一天之內添加多個功能的開發流程
GitHub 為我們提供瞭解決這些問題的機會和功能。
--------------------------------------------------------
本書旨在指導讀者使用GitHub進行高效開發。
1.內容全麵,係統講解GitHub的功能和實用技巧
2.圖文直觀,一步步演示GitHub的使用方法
3.實戰導嚮,專門搭建實踐倉庫,邀請讀者進行Pull Request 並共同維護
4.包含GitHub的開發流程和輔助工具,適閤需要引入GitHub的公司或團隊直接使用
內容簡介
《GitHub入門與實踐》從Git的基本知識和操作方法入手,詳細介紹瞭GitHub的各種功能,GitHub與其他工具或服務的協作,使用GitHub的開發流程以及如何將GitHub引入到企業中。在講解GitHub的代錶功能Pull Request時,本書專門搭建瞭供各位讀者實踐的倉庫,邀請各位讀者進行Pull Request並共同維護。
《GitHub入門與實踐》旨在指導各位讀者如何在開發現場使用GitHub進行高效開發,適閤所有想要使用GitHub進行開發的程序員或團隊閱讀。
作者簡介
大塚弘記,將敏捷軟件開發導入開發現場的領軍人物,以顧問身份就Web應用的開發及服務指導過多傢企業和團隊。曾為多傢企業和團隊導入GitHub,在建立一天之內多次部署的開發體製方麵擁有豐富經驗。
內頁插圖
目錄
第1章 歡迎來到GitHub的世界 1
1.1 什麼是GitHub 2
GitHub公司與octocat 2
並不隻是Git倉庫的托管服務 3
GitHub的使用情況 3
Column 專欄:GitHub與Git的區彆 4
1.2 使用GitHub會帶來哪些變化 4
協作形式變化 4
在開發者之間引發化學反應的Pull Request 5
對特定用戶進行評論 6
GitHub Flavored Markdown 7
Column 專欄:還可以這樣寫!! 7
能看到更多其他團隊的軟件 7
與開源軟件相同的開發模式 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 小結 14
參考資料 14
第2章 Git的導入 17
2.1 誕生背景 18
2.2 什麼是版本管理 18
集中型與分散型 19
集中型 19
分散型 19
集中型與分散型哪個更好 20
2.3 安裝 21
Mac與Linux 21
Windows 21
組件的選擇 22
設置環境變量 22
換行符的處理 23
Git Bash 23
本書所用的環境 24
2.4 初始設置 24
設置姓名和郵箱地址 24
提高命令輸齣的可讀性 25
2.5 小結 25
第3章 使用GitHub的前期準備 27
3.1 使用前的準備 28
創建賬戶 28
設置頭像 29
設置SSH Key 29
添加公開密鑰 30
使用社區功能 31
3.2 實際動手使用 31
創建倉庫 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 專欄:公開時的許可協議 37
進行push 37
3.3 小結 38
第4章 通過實際操作學習Git 39
4.1 基本操作 40
git init——初始化倉庫 40
git status——查看倉庫的狀態 40
git add——嚮暫存區中添加文件 41
git commit——保存倉庫的曆史記錄 42
記述一行提交信息 42
記述詳細提交信息 42
中止提交 43
查看提交後的狀態 43
git log——查看提交日誌 43
隻顯示提交信息的第一行 44
隻顯示指定目錄、文件的日誌 44
顯示文件的改動 45
git diff——查看更改前後的差彆 45
查看工作樹和暫存區的差彆 45
查看工作樹和最新提交的差彆 46
4.2 分支的操作 47
git branch——顯示分支一覽錶 48
git checkout -b——創建、切換分支 48
切換到feature-A分支並進行提交 48
切換到master分支 49
切換迴上一個分支 50
特性分支 50
主乾分支 51
git merge——閤並分支 51
git log --graph——以圖錶形式查看分支 52
4.3 更改提交的操作 53
git reset——迴溯曆史版本 53
迴溯到創建feature-A分支前 53
創建fix-B分支 54
推進至feature-A分支閤並後的狀態 55
消除衝突 56
查看衝突部分並將其解決 57
提交解決後的結果 57
git commit --amend——修改提交信息 58
git rebase -i——壓縮曆史 59
創建feature-C分支 59
修正拼寫錯誤 60
更改曆史 61
閤並至master分支 63
4.4 推送至遠程倉庫 63
gitremote add——添加遠程倉庫 64
git push——推送至遠程倉庫 64
推送至master分支 64
推送至master以外的分支 65
4.5 從遠程倉庫獲取 65
git clone——獲取遠程倉庫 65
獲取遠程倉庫 65
獲取遠程的feature-D分支 66
嚮本地的feature-D分支提交更改 67
推送feature-D分支 67
git pull——獲取最新的遠程倉庫分支 67
4.6 幫助大傢深入理解Git的資料 68
Pro Git 68
LearnGitBranching 69
tryGit 69
4.7 小結 70
第5章 詳細解說GitHub的功能 71
5.1 鍵盤快捷鍵 72
5.2 工具欄 73
關於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
關於UI 75
①News Feed 76
②Pull Requests 76
③Issues 76
④Stars 76
⑤Broadcast 76
⑥Repositories you contribute to 76
⑦Your Repositories 76
5.4 個人信息 77
關於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
關於UI 80
①用戶名(組織名)/倉庫名 80
②Watch/Star/Fork 80
③Code 81
④Issue 81
⑤Pull Requests 81
⑥Wiki 82
⑦Pulse 82
⑧Graphs 82
⑨Network 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
文件的相關操作 84
Column專欄:通過部分名稱搜索文件 85
查看差彆 85
查看分支間的差彆 85
查看與幾天前的差彆 86
查看與指定日期之間的差彆 87
5.6 Issue 87
簡潔且錶現力豐富的描述方法 88
語法高亮 89
添加圖片 90
添加標簽以便整理 90
添加裏程碑以便管理 91
Column 專欄:瞭解貢獻時的規則! 92
Tasklist語法 92
通過提交信息操作Issue 93
在相關Issue中顯示提交 93
Close Issue 93
將特定的Issue轉換為Pull Request 94
5.7 Pull Request 94
Column 專欄:獲取diff格式與patch格式的文件 96
Conversation 96
Column 專欄:引用評論 96
Commits 97
Column 專欄:在評論中應用錶情 98
Files Changed 98
5.8 Wiki 99
Pages 100
History 101
Column 專欄:在Wiki中顯示側邊欄 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 1
前言/序言
《代碼的煉金術:從零構建你的數字王國》 內容簡介 在這本《代碼的煉金術:從零構建你的數字王國》中,我們不探討 GitHub 的具體操作指令,不深入講解其“提交”、“分支”、“閤並”等具體工作流程,也不糾纏於“拉取請求”的細節。這本書,將帶你走進的是代碼的世界,感受創造的魔力,掌握構建數字世界的基石——編程的精髓。我們將剝離工具的束縛,迴歸編程語言最本質的思考方式,讓你真正理解“為什麼”要這麼寫,以及“如何”寫齣優雅、高效、可維護的代碼。 第一篇:思維的基石——編程的哲學與邏輯 在開始任何實際編碼之前,理解編程的底層邏輯至關重要。我們首先會從“計算思維”的角度齣發,探討如何將現實世界的問題分解成計算機可以理解的步驟。這包括: 抽象的藝術: 如何從繁雜的信息中提煉齣核心概念,形成模型,這是所有軟件開發的基礎。我們將通過生動的比喻和實際的例子,讓你領會抽象的力量。比如,如何將“一碗麵”的製作過程抽象成一係列指令,讓計算機也能“製作”。 算法的智慧: 深入理解算法不僅僅是記住一堆公式,而是掌握解決問題的策略。我們將剖析幾種經典但易於理解的算法思想,比如“查找”和“排序”,但重點不在於它們在特定語言中的實現,而在於它們背後的邏輯和效率考量。我們會討論為什麼有些方法比其他方法更快,以及在不同場景下如何選擇最優方案。 數據結構的語言: 數據是數字世界的原材料,而數據結構則是組織這些原材料的智慧。我們將探討列錶、棧、隊列、樹等基本數據結構的核心概念,以及它們如何影響程序的性能和設計。理解這些結構,將幫助你更有效地存儲和操作信息,為編寫高效代碼打下堅實基礎。 邏輯的嚴謹: 布爾邏輯、條件判斷、循環控製……這些是編程的骨架。我們將以清晰易懂的方式,闡述這些邏輯概念如何驅動程序的執行,以及如何避免邏輯錯誤。我們會用一些趣味性的場景來模擬程序的決策過程,讓你直觀感受邏輯的魅力。 模塊化的思維: 將龐大的係統分解成更小、更易於管理的模塊,是應對復雜性的關鍵。我們將探討模塊化的好處,以及如何進行閤理的劃分,為團隊協作和代碼復用奠定概念基礎。 第二篇:錶達的藝術——語言的靈魂與語法 編程語言是人類與計算機溝通的橋梁。在這部分,我們將聚焦於如何讓這種溝通變得清晰、準確、富有錶現力,而不是簡單羅列語法規則。 變量的生命: 理解變量不僅僅是內存中的一個地址,更是承載數據和狀態的實體。我們將深入探討變量的聲明、作用域、生命周期,以及不同數據類型(整數、浮點數、字符串、布爾值等)的特性和它們在內存中的錶示。 指令的序列: 程序就是一係列指令的集閤。我們將詳細講解順序執行、選擇執行(if/else)、重復執行(循環)的各種形式,以及如何通過這些基本控製結構構建復雜的程序邏輯。 函數的魔力: 函數是代碼的“樂高積木”,可以將重復的任務封裝起來,提高代碼的復用性和可讀性。我們將探討函數的定義、參數傳遞(值傳遞與引用傳遞的差異)、返迴值,以及遞歸的優雅。 對象的本質: 麵嚮對象編程是現代軟件開發的核心範式之一。我們將從“萬物皆對象”的理念齣發,講解類、對象、屬性、方法、封裝、繼承、多態等核心概念,讓你理解如何通過對象化的方式來建模和解決問題。 異常的處理: 錯誤是不可避免的,但如何優雅地處理它們,卻體現瞭代碼的健壯性。我們將探討異常的概念,以及如何使用 `try-catch` 等機製來捕獲和處理運行時錯誤,確保程序的穩定運行。 庫與框架的智慧: 站在巨人的肩膀上,可以看得更遠。我們將介紹如何利用現有的庫和框架來加速開發,以及如何理解它們的設計思想,而不是簡單地調用 API。 第三篇:構建的實踐——從構思到實現的流程 有瞭思維的基石和錶達的工具,我們還需要將它們轉化為實際可運行的程序。這一篇將關注從構思到實現的完整流程。 需求分析的火眼金睛: 在寫代碼之前,清晰地理解需求是成功的關鍵。我們將探討如何提煉用戶需求,將其轉化為清晰的程序功能描述,並識彆潛在的模糊之處。 設計的美學: 好的設計讓代碼易於理解、修改和擴展。我們將介紹幾種常見的軟件設計模式(如工廠模式、單例模式等)的原理和適用場景,幫助你寫齣更具“設計感”的代碼。 代碼的雕琢: 編寫清晰、簡潔、有意義的代碼是程序員的基本功。我們將分享編寫可讀性高、易於維護的代碼的技巧,包括命名規範、代碼注釋、代碼風格等。 測試的守護神: 軟件的質量離不開測試。我們將介紹單元測試、集成測試等基本測試理念,以及如何編寫有效的測試用例來驗證代碼的正確性。 調試的耐心: 遇到bug是常有的事,學會高效的調試技巧可以事半功倍。我們將分享一些通用的調試思路和方法,幫助你快速定位和解決問題。 版本迭代的智慧: 軟件開發不是一蹴而就的。我們將探討如何規劃和管理軟件的迭代過程,以及如何根據反饋不斷優化和改進産品。 第四篇:開放的世界——協作與共享的理念 編程的魅力不僅在於個人創造,更在於社區的協作和知識的共享。雖然本書不直接涉及 GitHub 的具體操作,但我們將深入探討與之相關的核心理念。 協作的藝術: 軟件開發往往是團隊的結晶。我們將探討如何在團隊中進行有效的溝通、代碼審查和知識共享,以及如何構建一個健康的協作氛圍。 共享的價值: 開源軟件的力量在於其開放性和社區驅動。我們將深入理解開源的意義,以及如何貢獻和利用開源項目,共同推動技術的進步。 知識的傳承: 學習是程序員終生的課題。我們將探討如何有效地學習新的技術,如何閱讀他人的代碼,以及如何將自己的經驗分享給他人。 代碼的“朋友圈”: 理解社區的力量,以及如何通過參與社區活動來提升自己的視野和技能。 本書特色: 重概念,輕工具: 核心在於理解編程的本質,而不是拘泥於特定工具的使用。 循序漸進,深入淺齣: 從最基礎的思維方式講起,逐步深入到高級的概念,用最生動形象的語言解釋復雜的理論。 實踐導嚮,案例豐富: 結閤大量的類比、僞代碼和概念性示例,讓你在理解理論的同時,也能看到落地的可能性。 培養思維,提升能力: 最終目標是讓你具備獨立思考、解決問題的能力,成為一名真正的“代碼煉金術士”。 無論你是初次接觸編程,還是希望深化對編程的理解,亦或是渴望構建齣屬於自己的數字世界,《代碼的煉金術:從零構建你的數字王國》都將是你不可或缺的嚮導。讓我們一起,用代碼點亮你的數字夢想!