單元 6 · GitHub Pages

把靜態網站免費部署上線 — GitHub Pages

活教材:你正在看的這個網站、以及 Markdown / YAML / JSON 三個教學站, 全部都是用 GitHub Pages 免費部署的。學完這單元,你就能複製同樣的事。

Pages 是什麼 · What is Pages

GitHub Pages 是 GitHub 內建的靜態網站託管服務—— 把 repo 裡的 HTML/CSS/JS(或 Markdown)直接變成網站,免費、附 HTTPS、綁 github.io 網域。

repo 內容
my-site/
├── index.html
├── about.html
└── assets/
    └── site.css
發布後網址 · URL
https://使用者.github.io/my-site/

# 專案網頁:/repo名/
# 個人/組織網頁:/(repo 名必須是 使用者.github.io)

啟用 Pages · 三種方式

方式一:從 main 分支(最簡單)

操作 · SETUP
1. repo → Settings → Pages
2. Source: Deploy from a branch
3. Branch: main  /  (root)
4. Save → 等 1~2 分鐘建置
5. 出現網址:https://你.github.io/repo名/
進階:純靜態站記得加一個空的 .nojekyll 檔, 讓 GitHub 不要用 Jekyll 處理你的 HTML(本站就是這樣做的)。

方式二:GitHub Actions(自動化,單元 7 詳談)

workflow 片段 · SNIPPET
- uses: actions/configure-pages@v5
- uses: actions/deploy-pages@v4

適合需要建置步驟的專案(如 Astro / Vite 編譯後再部署)。

方式三:gh CLI(命令列,單元 8 詳談)

gh 指令 · COMMANDS
gh repo create my-site --public --source=. --push
gh api --method POST \
  repos/USER/my-site/pages \
  -f "source[branch]=main" -f "source[path]=/"

自訂網域 · Custom Domain

想用自己的網域(如 blog.example.com):

  1. Pages 設定填 CNAME:blog.example.com
  2. 到你的 DNS 供應商加 CNAME 記錄指向 使用者.github.io
  3. 等 DNS 生效,即可用 https://blog.example.com 存取。

限制要知道 · Limits

項目限制
內容靜態檔案(無後端、無資料庫)
建置次數每月有一定配額(免費方案約 10 次/小時)
大小repo 建議 1GB 以下
用途禁用於商業用途的伺服器型服務(個人/專案網站 OK)
重要:Pages 是靜態的——沒有帳號登入、沒有伺服器端資料庫。 需要後端時,改用其他服務(如 Firebase、Vercel 等)。

動手做:部署你自己的教學站

把前面學的串成實作:

  1. 建一個 repo(如 my-site),放 index.htmlassets/site.css
  2. Push 到 GitHub,加 .nojekyll
  3. Settings → Pages → Deploy from branch → main。
  4. 等 1–2 分鐘,https://你.github.io/my-site/ 上線。

想更深入,可回顧本站姊妹站的結構當範本。

看完這頁你應該能說出:
  • GitHub Pages 是什麼、免費能幹嘛。
  • 從 main 分支啟用 Pages 的步驟。
  • .nojekyll 的作用。
  • 自訂網域的 CNAME 流程。
  • 靜態的限制與替代方案。

延伸閱讀