Skip to content

從零開始搞懂 GitHub 協作:開源新手必讀的名詞大全

第一次想在 GitHub 上貢獻程式碼,卻被一堆術語搞得暈頭轉向?這篇文章幫你一次搞懂所有核心概念。

作者:Ray 日期:2025 年 12 月 17 日


剛接觸 GitHub 的時候,我也被這些術語搞得很困惑。Fork 是什麼?PR 又是什麼?為什麼要 rebase?這篇文章把我當初希望有人告訴我的東西,全部整理出來。

先搞懂最基本的:你的程式碼住在哪裡?

Repository (Repo)

簡單說,就是你的專案資料夾,但它不只是資料夾——它記住了你每一次的修改歷史。誰改的、什麼時候改的、改了什麼,全部都有紀錄。

你可以把它想像成一個有「時光機」功能的資料夾。

Clone

把雲端的 repo 下載到你的電腦上。這樣你就能在本機開發,不用一直連網。

bash
git clone https://github.com/username/repo-name.git

Fork

這是開源協作的第一步。

當你想貢獻別人的專案,你不能直接改人家的程式碼(想想也知道這樣會亂套)。所以你先把整個專案「複製」一份到你自己的帳號下,這個動作就叫 Fork。

Fork 出來的是你的副本,你可以隨便改,不會影響原本的專案。改好之後,再透過 Pull Request 請求合併回去。


版本控制的基本動作

Branch(分支)

想像你在寫一份報告,但你想試試看另一種寫法。你會怎麼做?複製一份出來改,對吧?

Branch 就是這個概念。你從主線(通常叫 mainmaster)岔出去,開一條新的線來開發新功能。這樣即使你改壞了,主線還是安全的。

bash
git checkout -b feature/new-feature

Commit

每次你覺得「好,這個階段可以存檔了」,就做一次 commit。它會記錄:

  • 你改了哪些檔案
  • 什麼時候改的
  • 你是誰
  • 你為什麼改(commit message)

寫好 commit message 很重要。三個月後的你會感謝現在的你。

bash
git commit -m "修正登入頁面的驗證邏輯"

Push & Pull

  • Push:把你本機的修改上傳到遠端(GitHub)
  • Pull:把遠端的更新下載到本機

這兩個動作讓你的本機和雲端保持同步。


協作的核心:Pull Request

Pull Request (PR)

這是開源協作的靈魂。

當你在自己的 fork 上改好程式碼後,你會發一個「請求」給原專案,說:「嘿,我改了這些東西,你們要不要收?」

這個請求就是 Pull Request。

PR 不只是提交程式碼,它還是討論的地方。維護者可能會問你為什麼這樣改、建議你調整某些地方,你們來回討論,直到大家都滿意,才會 merge。

Merge

把一個分支的修改合併到另一個分支。當你的 PR 被接受,維護者就會把你的程式碼 merge 進主線。

恭喜,你成為這個專案的 contributor 了!

Code Review

在 merge 之前,通常會有人幫你看程式碼,這就是 Code Review。

不要害怕 review,這是學習的好機會。好的 reviewer 會告訴你為什麼要這樣改,而不只是說「這樣不行」。


Issue:專案的討論區

Issue 是什麼?

Issue 是 GitHub 內建的討論系統。你可以用它來:

  • 回報 bug:「這個按鈕點了沒反應」
  • 提出新功能:「希望可以支援深色模式」
  • 問問題:「請問這個函數是做什麼用的?」

每個 issue 都有編號,你可以在 commit 或 PR 中引用它。

bash
git commit -m "修正登入問題 #42"

這樣 GitHub 會自動把這個 commit 連結到 issue #42。

Labels

用來分類 issue 的標籤。常見的有:

Label意思
bug程式錯誤
enhancement新功能或改進
documentation文件相關
good first issue適合新手的任務
help wanted需要協助

小技巧:想開始貢獻開源?搜尋 good first issue 標籤,這些通常是維護者特別挑出來給新手練手的。


自動化:讓機器幫你把關

CI/CD

全名是 Continuous Integration / Continuous Deployment,中文叫持續整合與部署。

簡單說,就是每次有人提交程式碼,機器會自動:

  1. 跑測試,確保沒有東西壞掉
  2. 檢查程式碼風格
  3. 甚至自動部署到伺服器

這樣就不用人工一個一個檢查,省時又不會漏掉。

GitHub Actions

GitHub 內建的自動化工具。你可以設定:

  • 每次 push 就跑測試
  • 每次發 PR 就檢查程式碼風格
  • 每天定時執行某些任務

設定檔放在 .github/workflows/ 資料夾裡。

Linter

自動檢查程式碼風格的工具。它會告訴你:

  • 縮排不對
  • 變數沒用到
  • 命名不符合規範

很煩,但很有用。統一的風格讓程式碼更容易維護。


專案必備的文件

一個好的開源專案,通常會有這些文件:

README.md

專案的門面。訪客第一眼看到的就是這個。

好的 README 要包含:

  • 專案是做什麼的
  • 怎麼安裝
  • 怎麼使用
  • 簡單的範例

CONTRIBUTING.md

貢獻指南。告訴想參與的人:

  • 怎麼設定開發環境
  • 怎麼提交 PR
  • commit message 要怎麼寫
  • 程式碼風格要求

LICENSE

授權條款。這個很重要!

沒有 LICENSE 的專案,別人在法律上是不能用的。常見的授權:

授權特性
MIT最寬鬆,幾乎可以做任何事
Apache 2.0類似 MIT,但有專利保護
GPL衍生作品也必須開源

CODE_OF_CONDUCT.md

行為準則。定義社群的互動規範,讓大家知道什麼行為是被接受的、什麼不是。


進階概念:當你開始深入協作

Upstream vs Origin

這兩個詞常常讓人搞混:

  • Origin:你自己的遠端 repo(通常是你 fork 的那份)
  • Upstream:原始專案的 repo

當原專案更新了,你需要從 upstream 同步最新的程式碼到你的 fork。

bash
git fetch upstream
git merge upstream/main

Conflict(衝突)

當兩個人改了同一段程式碼,Git 不知道該用誰的版本,這就產生了衝突。

你需要手動決定要保留哪個版本,或者合併兩者。這是協作中最讓人頭痛的部分,但也是必經之路。

Rebase

把你的 commits「搬」到另一個分支的最新點上。

跟 merge 的差別是:rebase 會讓 commit 歷史更乾淨、更線性,但操作比較複雜,搞錯了會很麻煩。

新手建議先用 merge,熟了再學 rebase。

Squash

把多個 commits 壓成一個。

有時候你開發過程中 commit 了很多次(「修 bug」「真的修好了」「這次真的」),squash 可以把它們合成一個乾淨的 commit。


標準協作流程:從頭到尾走一遍

  1. Fork 原專案到自己帳號
  2. Clone 到本機
  3. 建立新 Branch
  4. 修改程式碼並 Commit
  5. Push 到自己的 Fork
  6. 發起 Pull Request
  7. 等待 Code Review
  8. 根據回饋修改或討論
  9. Merge 完成!

結語

GitHub 協作一開始確實有點門檻,術語多、流程也要習慣。但一旦搞懂這些概念,你會發現開源世界其實很友善。

不要怕犯錯,每個人都是從新手開始的。找一個 good first issue,發你的第一個 PR,開始你的開源之旅吧!

MIT Licensed