學習中心/術語一次搞懂·24 分鐘

GitHub 是什麼?Git、PR、CI、E2E 這些名詞一次搞懂

作者·

一句話回答

GitHub 是一個「放程式碼、做版本管理與團隊協作」的線上平台,可以想成工程師的雲端硬碟加上協作平台。Git 是記錄版本的工具、跑在你電腦上。GitHub 是把 Git 專案放到雲端,再加上協作、審查與自動化的網站。

先懂 Git(跟 GitHub 只差一個字,但不一樣)

要懂 GitHub,先懂 Git。Git 是一套「版本控制工具」。它會記錄程式碼每一次的變更,讓你隨時能回到任何一個歷史版本、看到「誰、在什麼時候、改了哪一行」。

你可以把 Git 想成「無限次數的存檔點加上完整的編輯紀錄」。寫文件如果有這種功能,你就永遠不怕改壞、也永遠查得到誰動過什麼。程式碼太重要,所以工程師幾乎都用 Git 管理。

那 GitHub 是什麼

Git 是「工具」,本身跑在你電腦上。GitHub 則是「把 Git 專案放到雲端、再加上協作、討論、權限管理」的網站平台。

簡單說:Git 幫你記錄版本,GitHub 幫你把它放上網、跟別人一起協作。類似的平台還有 GitLab、Bitbucket,但 GitHub 最大、最多人用。

程式碼會經過的四個地方

最容易卡住的地方,是搞不懂為什麼存個檔要打三、四個指令。原因是 Git 把「改東西」到「傳上雲端」切成了幾段,每一段都是一個可以反悔的關卡。

工作區你正在改的檔案暫存區挑好這次要送的本機版本庫你電腦上的歷史GitHub雲端的那一份git addgit commitgit pushgit clonegit pulladd 是「挑」,commit 是「存檔」,push 是「上傳」。分成三步的用意是:你可以只送一部分改動,不必把手上沒做完的東西一起送出去。
從你電腦到 GitHub,程式碼會經過四個地方。每一支指令只負責把它往前推一格。
  • 工作區(working directory):你電腦上正在編輯的那些檔案,跟平常用 Word 改文件沒兩樣
  • 暫存區(staging area):一個「待送清單」。你今天改了五個檔案,但只想送其中兩個,就用 git add 把那兩個放進來
  • 本機版本庫(local repository):git commit 之後,這次的改動變成一個正式的存檔點,存在你自己的電腦裡。這時候還沒有人看得到
  • 遠端(remote):雲端上的那一份,也就是 GitHub。git push 才是真正上傳。多數專案的遠端只有一個,預設名字叫 origin
  • git pull:把別人推上去的更新拉到你電腦。開始工作前先 pull 一次,可以少很多麻煩
  • git clone:第一次把整個專案從 GitHub 整包抓下來,之後就不用再 clone 了

名詞一次看完

跟工程師開會時最常出現的就是這些字。先掃一遍有印象就好,後面幾張圖會把它們串起來:

  • repository(repo,儲存庫):一個專案的資料夾,一個 repo 通常放一個專案的所有程式碼
  • commit(提交):一次存檔,把這次的修改記錄下來、附一句說明
  • branch(分支):從主線分出來的一條平行版本,讓你在不影響正式版的情況下改東西
  • main(主線):預設分支的名字,代表「目前正式的版本」。比較舊的專案會叫 master,是同一個東西
  • pull request(PR,合併請求):「我改好了,請幫我看過再併回主線」的正式請求。程式碼審查就發生在這裡
  • merge(合併):審查通過後,把分支的改動併回主線
  • conflict(衝突):兩個人改到同一行,Git 不敢替你決定留哪個,停下來等人處理
  • fork(分叉):把別人的 repo 複製一份到你自己的帳號底下
  • issue(議題):用來記錄一個 bug 或一個需求的討論串。非工程師最常會用到的就是這個
  • README:repo 首頁那份說明文件,講這個專案是什麼、怎麼安裝、怎麼用。評估一個工具先看它
  • .gitignore:一份「這些檔案不要上傳」的清單。密碼檔、暫存檔都該寫進去
  • release / tag:把某個版本標記起來並附上更新說明,例如 v1.2.0。想知道新版改了什麼就看這裡
  • open source(開源):程式碼公開,讓任何人都能看、能用、能一起改

做一個新功能,流程長什麼樣

了解這個流程,你就看得懂工程師在說什麼,也能判斷一個專案有沒有基本的品質把關:

main合併完成branchcommitPull Request請人看過再併① 開分支② 邊改邊存檔③ 同事逐行審查④ 通過才 merge主線上永遠是「可以上線的版本」。沒通過審查的東西進不了 main。
做一個新功能的完整流程。分支讓你在不動到正式版的情況下改東西,PR 則是「請人看過再併回去」的正式關卡。
  • 開分支:從主線分出一條 branch 來做這次的功能,正在上線的版本完全不受影響
  • 改動並 commit:一邊改一邊存檔,每個 commit 附一句說明「這次改了什麼」
  • 推上 GitHub(push):把本機的改動同步到雲端,同事才看得到
  • 開 pull request:正式提出「請合併」。PR 頁面會列出這條分支跟主線的每一行差異
  • 審查(code review):同事逐行看過、提問、要求修改。這一步是品質與資安的重要防線
  • 合併(merge):通過後併回主線,接著才會部署上線

兩個人改到同一行,會發生什麼事

「衝突(conflict)」聽起來很可怕,其實是 Git 最貼心的設計之一。它不是錯誤訊息,是 Git 在說「這一行兩個人都改了,我不敢替你決定」。

A 改了第 10 行寫成「售價 100」B 也改了第 10 行寫成「售價 120」衝突 conflictGit 停下來問你人來決定留哪一個,或兩個都要改完再 commit 一次改到不同檔案、或同一個檔案的不同地方,Git 會自己併好。只有「同一行」才需要人出手。
衝突(conflict)不是錯誤,是 Git 在說「這一行兩個人都改了,我不敢替你決定」。
  • 改到不同檔案,Git 自己併好,你不會知道有這回事
  • 改到同一個檔案的不同地方,Git 也自己併好
  • 只有改到同一行才會停下來,把兩個版本並排給你看,由你決定留哪個或兩個都要
  • 解法就是打開那個檔案、把要的留下來、刪掉標記,再 commit 一次
  • 開始改之前先 git pull,可以避開大部分的衝突。衝突通常是因為手上的版本太舊

CI 與 CD 是什麼(每次交程式碼,機器自動做的事)

這兩個縮寫幾乎一定會在會議裡聽到。拆開來看其實很單純:

CI(Continuous Integration,持續整合):每次有人交出改動,機器就自動把整包程式碼檢查一遍。跑測試、檢查格式、試著建置一次、掃有沒有把密碼寫進程式碼。任何一項沒過,PR 上就出現紅色叉叉,合併按鈕按不下去。

CD(Continuous Delivery/Deployment,持續交付/部署):檢查通過、合併之後,機器自動把新版本送上正式站,不必有人手動上傳。

開 PR你交出改動觸發CI 自動檢查跑測試檢查格式試著建置掃機密外洩全過才准合併進 mainCD自動上線部署到正式站任何一格沒過,PR 上會出現紅色叉叉,合併按鈕按不下去。在 GitHub 上負責跑這些事的服務叫 GitHub Actions。要檢查什麼、怎麼部署,都寫在專案裡的一份設定檔,機器照著做,不必靠人記得。
CI 是「每次有人交程式碼,機器自動檢查一遍」。CD 是「檢查通過就自動送上線」。這兩件事都不用人動手。
  • GitHub Actions:GitHub 內建、負責跑這些自動化的服務。要檢查什麼、怎麼部署,都寫在專案裡的一份設定檔
  • 為什麼值得在意:有 CI 的專案,「改壞了才發現」的機率低很多。問外包「你們有沒有跑 CI」是一個很快的品質判斷
  • 紅燈綠燈:PR 頁面上綠色勾勾代表全過、紅色叉叉代表有東西壞了。不用懂細節,看顏色就知道能不能併
  • 它也會花錢:公開專案用標準規格的機器免費,私有專案有免費額度(GitHub Free 方案每月 2,000 分鐘、每月初歸零),超過要付費。額度是整個帳號共用,不是每個專案各算一份。各方案的額度與超額價格見 GitHub 要錢嗎?

CI 到底在跑什麼測試(單元、整合、E2E、煙霧)

上一段說 CI 會「跑測試」,但測試分好幾種,各管各的事。開會時最常聽到的是這幾個:

E2E整合測試單元測試少、慢、貴整條路走一遍中等幾塊接起來測多、快、便宜一個函式一個測煙霧測試 smoke test上線後馬上跑的極短清單:首頁開得起來嗎、登入進得去嗎、能不能下一筆單。只問「有沒有燒起來」。
測試金字塔:越下層越多、越快、越便宜。煙霧測試不在這個分層裡,它是「上線後先確認沒燒起來」的快速確認。
  • 單元測試(unit test):只測一個小零件。例如「輸入 100 元、打八折,會不會算出 80」。跑一次不到一秒,所以可以寫很多、每次改動都跑
  • 整合測試(integration test):把幾個零件接起來測。例如「下單之後,庫存有沒有真的減一、訂單有沒有真的寫進資料庫」
  • E2E 測試(end-to-end,端對端測試):開一個真的瀏覽器,從頭到尾走一遍使用者會走的路:打開網站、登入、加進購物車、結帳。最接近真實情況,但也最慢,而且畫面一改就容易壞掉,需要花力氣維護
  • 煙霧測試(smoke test):名字來自硬體業,通電之後看會不會冒煙。上線後馬上跑一份極短的清單,只確認最重要的那幾件事還活著:首頁開得起來、登入進得去、能下一筆單。通常一分鐘內跑完
  • 迴歸測試(regression test):確認「以前修好的 bug 沒有又跑回來」。實務上就是把每次出過事的情境留成測試,之後每次都跑一遍

測試全過,不代表使用者看到的東西是對的

這是最常見的一個誤會,也值得寫進你的驗收標準。單元測試保證的是「每個零件自己算對了」,它不會知道畫面長什麼樣。

版面跑掉、按鈕被蓋住點不到、手機上少了一個欄位、頁尾寬度跟內文對不齊,這些單元測試全部抓不到,但使用者一打開就看到。所以驗收時除了問「測試有沒有過」,還要真的打開來看一眼,或者要求有 E2E 測試涵蓋主要流程。

反過來說也不必走極端。E2E 寫太多會慢到沒人想跑、改個按鈕位置就一堆紅燈。實務上多數團隊的做法是:單元測試寫多一點,E2E 只蓋最重要的幾條路(能不能登入、能不能下單、能不能付款),上線後再跑一次煙霧測試。

fork 跟 clone 差在哪

這兩個很容易搞混,但用途完全不同。

clone 是「把專案抓到我電腦上」,雲端那一份還是原本那個 repo,你改完可以直接推回去(前提是你有權限)。同一個團隊內部協作用的是 clone。

fork 是「把整個 repo 複製一份到我自己的 GitHub 帳號底下」,變成你的東西。你在自己那份上面隨便改都不會影響原作者。改好之後如果想回饋給原專案,再從你的 fork 開一個 PR 過去,由原作者決定收不收。

所以:團隊同事用 clone,對外部開源專案貢獻用 fork。

公開與私有:最常見、也最貴的一個踩雷

建立 repo 時要選 public(公開,全世界都看得到)或 private(私有,只有你授權的人看得到)。這個選擇看起來很單純,卻是最常出事的地方。

最典型的意外是:把 API 金鑰、資料庫密碼寫在程式碼裡,然後 push 到公開的 repo。網路上有自動化程式在持續掃描新上傳的公開程式碼找金鑰,這件事可能在幾分鐘內就被抓走盜用。

更麻煩的是,把那一行刪掉、重新上傳並沒有用。Git 的本質就是保留完整歷史,舊版本裡的金鑰還在。正確的補救順序是:立刻到服務後台把那把金鑰作廢並換新,再處理歷史紀錄。詳細做法可看金鑰安全那篇。

你會在哪裡碰到 GitHub

  • 想用某個免費工具,說明常寫「到 GitHub 下載」
  • 跟工程師或外包合作,程式碼放在 GitHub 上一起改
  • 某些 AI 開發工具會要你「授權連接你的 GitHub 專案」,它才能讀你的程式碼幫你改
  • 評估一個開源工具值不值得用時,去看它的 GitHub 頁面(下面會教看什麼)

授權 AI 或第三方工具連接 GitHub 前,先檢查這四件事

越來越多 AI 工具會要求連接你的 GitHub。程式碼是公司的核心資產,授權前請先確認:

  • 它要求的是唯讀還是可寫? 只是幫你看程式碼,給唯讀就夠。可寫代表它能改動、甚至刪除你的東西
  • 授權範圍是全部 repo 還是指定幾個? 能指定就只指定必要的那幾個,不要一次開放整個帳號
  • 用誰的帳號授權? 不要用擁有組織最高權限的帳號。理想上用權限受限的專用帳號或機器人帳號
  • 怎麼收回、多久檢查一次? 事先確認取消授權的位置,並把「定期盤點已授權的第三方應用」排進例行工作

非工程師其實用得上的四件事

GitHub 不是只有工程師能用。這幾件事你自己就做得到,而且很實用:

  • 評估一個開源工具值不值得用:看它「最後更新是什麼時候」(半年以上沒動要小心)、「有多少人在追蹤」、「未解決的 issue 多不多、作者有沒有在回」
  • 回報問題:發現工具有 bug,可以直接開一個 issue 描述問題。多數專案歡迎清楚的問題回報
  • 看更新說明(Releases):想知道某個工具新版改了什麼,這裡通常有整理好的說明
  • 確認授權條款:見下一段。這關係到你能不能商用

開源不等於「可以隨便拿來商用」

「開源」指的是程式碼公開,不代表沒有任何使用條件。每個開源專案都會附一個「授權條款(License)」,規定你能怎麼用。

常見的幾類,白話版:

  • MIT、Apache 這類寬鬆授權:幾乎可以自由使用(含商用),通常只要求保留原作者的版權聲明。這是商用最沒有負擔的一類
  • GPL 這類「傳染性」授權:如果你把它用進自己的產品並且對外發布,可能會被要求你的程式碼也要一起開源。商用前務必請人確認
  • 沒有寫授權條款的專案:GitHub 自己維運的授權說明網站講得很直白——作品預設就是「專屬著作權」,別人複製、散布或修改都可能面臨法律風險。看得到原始碼不等於可以拿來用
  • 判斷方式:到專案首頁看有沒有 LICENSE 檔案。金額大或涉及對外產品時,這件事該由法務或律師確認,不要靠工程師或 AI 的印象

對非工程師的意義

你不用會用 GitHub 寫程式,但知道它是「程式碼的協作平台」,就能在被要求「授權連接 GitHub」時知道那是在做什麼、在跟工程師溝通時不卡名詞,也看得懂「這個工具在 GitHub 上開源」代表什麼。

如果你有外包或委外開發,還有一件事一定要確認:程式碼放在誰的 GitHub 帳號底下。放在對方帳號、你連看都看不到,是合作破裂時最常見的災難。應該在合約階段就約定好放在你公司的組織帳號,並確保你有管理權限。

常見問題

GitHub 免費嗎?

免費。Free 方案可以開不限數量的公開與私有專案,協作者也不限人數。要付費的是私有專案的分支保護與審查工具(Pro、Team)、企業級管理(Enterprise)、超出額度的用量,以及另外訂閱的 Copilot。各方案的價格與差異整理在 GitHub 要錢嗎?。

GitHub 跟 Git 差在哪?

Git 是「記錄版本的工具」,跑在你電腦上。GitHub 是「把 Git 專案放上雲端、加上協作與權限」的網站。一個是工具,一個是放工具的平台。

commit 跟 push 有什麼不一樣?

commit 是在你自己電腦上存一個檔,只有你看得到。push 才是把這些存檔上傳到 GitHub,同事才看得到。commit 了但沒 push,等於東西還在你手上。

main 跟 master 是同一個東西嗎?

是。都是「主線」這條預設分支的名字。比較新的專案預設叫 main,比較舊的叫 master。功能完全一樣。

出現衝突(conflict)是不是我做錯什麼?

不是。衝突只代表你跟別人改到同一行,Git 不替你決定留哪個。打開檔案挑一個留下、刪掉標記、再 commit 一次就好。想少遇到,開始改之前先 pull 一次。

CI 沒過可以硬合併嗎?

技術上有權限的人通常可以強制合併,但那等於把自動檢查關掉。紅燈代表有測試壞掉、或程式碼裡有不該出現的東西,正常做法是修好再併。

E2E 測試跟煙霧測試差在哪?

E2E 是「把使用者會走的路完整走一遍」,例如登入、加入購物車、結帳,範圍完整但慢。煙霧測試是「上線後花一分鐘確認最重要的幾件事沒壞」,範圍極小但快。兩個目的不同,通常都會有。

只寫單元測試夠嗎?

不夠。單元測試只保證每個零件自己算對了,抓不到版面跑掉、按鈕點不到這類問題。實務常見做法是單元測試寫多一點、E2E 只蓋最重要的幾條路,上線後再跑一次煙霧測試。

fork 跟 clone 該用哪一個?

同一個團隊、你本來就有權限推回去,用 clone。想改別人的開源專案、你沒有權限,用 fork 到自己帳號下改,再開 PR 給原作者。

改壞了可以回到上一版嗎?

可以,這正是 Git 存在的理由。每個 commit 都是一個可以回去的存檔點。實務上會用 revert 產生一個「把那次改動反向抵銷」的新 commit,歷史紀錄完整保留。

放到 GitHub 上的東西,別人看得到嗎?

取決於你把 repo 設成公開還是私有。公開的全世界都看得到,私有的只有你授權的人看得到。公司的程式碼預設應該用私有,並定期檢查有沒有誤設成公開。

不小心把密碼上傳到公開的 repo,刪掉就好了嗎?

不行。Git 會保留完整歷史,刪掉那一行,舊版本裡的密碼還在,而且可能已經被自動掃描程式抓走。正確順序是:立刻到該服務後台作廢那把金鑰並換新的,再處理歷史紀錄。

我可以直接拿 GitHub 上的開源程式來做商業產品嗎?

要看它的授權條款。MIT、Apache 這類寬鬆授權通常可以,記得保留版權聲明。GPL 這類則可能要求你的產品也一起開源。沒寫授權的預設是保留所有權利。金額大或對外發布前,請法務確認。

委外開發時,程式碼該放誰的 GitHub?

應該放在你公司的組織帳號下,並確保你擁有管理權限。這件事要寫進合約。程式碼放在外包方帳號、你沒有存取權,是合作結束時最常見也最難補救的糾紛。

資料來源

每一筆都實際打開確認過。日期是該來源標示的發布日,這類規格會變動, 需要最新狀況請直接看原始出處。

  1. 01
    No License
    Choose a License(GitHub, Inc. 維運)·2026-09-20官方一手

    沒有附授權條款時,作品預設處於專屬著作權之下,他人複製、散布、修改都有法律風險。本文「看得到原始碼不等於可以拿來用」出自這裡。日期為本文查證當日。

  2. 02
    GNU General Public License v3.0
    Choose a License(GitHub, Inc. 維運)·2026-09-20官方一手

    GPL-3.0 列為必要條件的「公開原始碼」與「沿用相同授權」,也就是本文說的「可能被要求你的程式碼也一起開源」。⚠️ 這是條款摘要不是法律意見,金額大或要對外發布前請找法務。日期為本文查證當日。

  3. 03
    GitHub Actions billing
    GitHub Docs 官方文件·2026-09-20官方一手

    公開 repo 使用標準 runner 免費、GitHub Free 方案每月含 2,000 分鐘、分鐘數算在帳號層級且每月初歸零。日期為本文查證當日。

延伸閱讀

想讓整個團隊真的會用 AI?

我把自己經營公司在用的 AI 實戰,做成企業內訓 —— 帶團隊用真實任務當場做出成果。

看企業 AI 內訓