Git 和 GitHub
所有開發者都會使用某種版本控制系統(VCS),這是一種工具,允許他們與其他開發者協作完成專案,而無需擔心彼此覆蓋工作,並在稍後發現問題時回滾到程式碼庫的先前版本。最流行的 VCS(至少在 Web 開發人員中)是Git,以及GitHub,這是一個提供儲存庫託管和多個用於處理儲存庫的工具的網站。本模組旨在教你關於這兩者你需要了解的內容。
概述
VCSes 對於軟體開發至關重要
- 你很少會完全獨自完成一個專案,一旦你開始與其他人合作,你就會開始冒著與他人工作衝突的風險——當你們兩人都嘗試在同一時間更新同一部分程式碼時就會發生這種情況。你需要建立某種機制來管理這些事件,並幫助避免由此導致的工作損失。
- 在獨自或與他人合作完成專案時,你希望能夠將程式碼備份到中心位置,這樣如果你的電腦出現故障,程式碼就不會丟失。
- 你可能還想在以後發現問題時回滾到早期版本。你可能已經在自己的工作中開始這樣做,透過建立同一檔案的不同版本,例如
myCode.js、myCode_v2.js、myCode_v3.js、myCode_final.js、myCode_really_really_final.js等,但這確實容易出錯且不可靠。 - 不同的團隊成員通常希望建立他們自己的程式碼的獨立版本(在 Git 中稱為分支),在該版本中處理新功能,然後在完成後以受控的方式將其合併(在 GitHub 中我們使用拉取請求)到主版本中。
VCSes 提供了滿足上述需求的工具。Git 是 VCS 的一個示例,而GitHub 是一個網站 + 基礎設施,它提供了一個 Git 伺服器以及許多非常有用的工具,用於單獨或團隊協作處理 git 儲存庫,例如報告程式碼問題、審查工具、專案管理功能(例如分配任務和任務狀態)等等。
注意:Git 實際上是一個分散式版本控制系統,這意味著包含程式碼庫的儲存庫的完整副本會複製到你的電腦上(以及其他每個人的電腦上)。你對自己的副本進行更改,然後將這些更改推送到伺服器,管理員將決定是否將你的更改與主副本合併。
先決條件
要使用 Git 和 GitHub,你需要
- 安裝了 Git 的臺式電腦(請參閱Git 下載頁面)。
- 一個用於 Git 的工具。根據你喜歡的使用方式,你可以使用Git GUI 客戶端(我們推薦 GitHub Desktop、SourceTree 或 Git Kraken),或者堅持使用終端視窗。事實上,即使你打算使用 GUI,瞭解至少 Git 終端命令的基礎知識可能對你也很有用。
- 一個GitHub 賬戶。如果你還沒有,請立即使用提供的連結註冊。
在先決條件知識方面,你無需瞭解任何關於 Web 開發、Git/GitHub 或 VCSes 的知識即可開始本模組。但是,建議你瞭解一些編碼知識,以便你擁有合理的計算機素養,以及一些儲存在儲存庫中的程式碼!
最好你還具備一些基本的終端知識,例如在目錄之間移動、建立檔案以及修改系統 PATH。
注意:GitHub 不是你可以與 Git 一起使用的唯一站點/工具集。還有其他替代方案,例如GitLab,你可以嘗試使用它們,你也可以嘗試設定自己的 Git 伺服器並使用它而不是 GitHub。在本課程中,我們只堅持使用 GitHub,以提供一種可行的方法。
指南
請注意,下面的連結會將你帶到外部網站上的資源。最終,我們的目標是擁有自己的 Git/GitHub 專門課程,但就目前而言,這些課程將幫助你掌握手頭的主題。
- 你好,世界(來自 GitHub)
-
這是一個很好的起點——這份實用指南讓你立即開始使用 GitHub,學習 Git 的基礎知識,例如建立儲存庫和分支、提交以及開啟和合並拉取請求。
- Git 手冊(來自 GitHub)
-
這份 Git 手冊深入探討了更多內容,解釋了什麼是 VCS、什麼是儲存庫、基本 GitHub 模型的工作原理、Git 命令和示例等等。
- 派生專案(來自 GitHub)
-
當你想要為其他人的程式碼做出貢獻時,派生專案至關重要。本指南解釋瞭如何操作。
- 關於拉取請求(來自 GitHub)
-
一個管理拉取請求的有用指南,即你的建議程式碼更改如何傳遞給他人的儲存庫以供考慮。
- 掌握問題(來自 GitHub)
-
問題就像 GitHub 專案的論壇,人們可以在其中提問和報告問題,你也可以管理更新(例如分配人員修復問題、澄清問題、讓人們知道問題已解決)。本文介紹了你需要了解的關於問題的資訊。
另請參閱
- 瞭解 GitHub 工作流
- Git 命令列表
- 掌握 Markdown(你在 PR、問題評論和
.md檔案中編寫的文字格式)。 - GitHub Pages 入門(如何在 GitHub 上釋出演示和網站)。
- 學習 Git 分支
- Git 的飛行規則(一個非常有用的綱要,介紹瞭如何在 Git 中實現特定目標的方法,包括如何在出錯時糾正錯誤)。
- 該死的,git!(另一個有用的綱要,專門介紹瞭如何在出錯時糾正錯誤的方法)。