CH.06 · 財金程式設計互動教材

GitHub 版本控制與 Cloudflare Pages 部署實務

把前五章做好的金融工具,從自己電腦正式發布到網路上——Git 記錄版本、GitHub 保存雲端、Cloudflare Pages 自動部署,任何人都能透過網址使用。

git → GitHub → Pages

本章學習目標

  • 分辨 Git、GitHub、Cloudflare Pages 三者的差異與分工
  • 用 Git 指令或 GitHub 網頁完成第一次上傳與後續更新
  • 建立 Cloudflare Pages 專案,完成自動部署
  • 保護 Token 與機密資料,排除常見部署錯誤

01網站部署與版本控制的基本觀念

前五章完成的金融網站目前只在個人電腦中執行。若網站只保存在本機,會遇到:其他人無法透過網路使用、電腦故障可能遺失檔案、修改錯誤後不容易回復舊版本、不同電腦之間難以同步,以及無法建立正式網址等問題。

反面教材:檔名版本控制——很多初學者用這種方式管理版本,不可持續:

網站最新版.html
網站最新版2.html
網站最新版最後.html
網站最新版最後修正版.html
網站最新版真的最後.html   ← 真的是最後嗎?

這種方式的問題:無法判斷哪一個才是正確版本、不知道每個版本修改了什麼、修改錯誤時難以回復、多人合作時容易覆蓋彼此的檔案、不同電腦之間無法同步。

版本控制的好處:以 Git commit 管理版本

版本commit 訊息日期
v1建立首頁2026-01-10
v2新增複利計算器2026-01-15
v3新增債券 JSON 資料庫2026-02-01
v4修正 JSON 格式錯誤2026-02-03
v5新增股票圖表2026-02-20
i

若 v5 發生嚴重錯誤,可以立即回到 v4,不需要依賴人工備份的「最終版」。這就是版本控制的核心價值。

02Git、GitHub 與 Cloudflare Pages 的差異

工具主要功能不負責的事
Git
版本控制工具(本機)
記錄每次檔案修改、建立版本(commit)、比較差異、回復舊版本、建立分支(branch)、合併修改(merge)不等於雲端,也不等於網站
GitHub
Git 專案託管平台(雲端)
保存 Repository、顯示每次 commit、多人協作、連接 Cloudflare Pages、Issues 與專案管理不負責部署網站,不執行程式
Cloudflare Pages
靜態網站部署服務
連接 GitHub Repository、自動取得最新檔案、建立公開網址(pages.dev)、提供 HTTPS、偵測 push 後自動重新部署、綁定自有網域不負責撰寫程式,不取代 Git 版本控制
本機修改git add + commit
Git(本機)記錄版本紀錄
GitHub(雲端)git push|保存 Repository
自動偵測新 commit 出現
Cloudflare Pages取得最新檔案,重新部署
公開網站xxx.pages.dev

03Repository 的基本概念

Repository(簡稱 Repo)可以理解為「一個具有版本紀錄的專案資料夾」。金融網站的 Repository 包含所有 HTML、CSS、JavaScript、JSON、圖片、Python 程式與說明文件。

financial-platform/
├─ index.html            ← 第一章:複利計算器
├─ time-value.html       ← 第二章:貨幣時間價值
├─ bond-database.html    ← 第三章:債券資料庫
├─ visualization.html    ← 第五章:金融圖表
├─ css/                  ← 所有 CSS 樣式
├─ js/                   ← 所有 JavaScript
├─ data/                 ← JSON、CSV 資料
├─ images/               ← 圖片資源
├─ output/                ← Plotly 輸出 HTML
├─ python/               ← Python 分析程式
├─ README.md             ← 專案說明(必填)
└─ .gitignore            ← 排除不應上傳的檔案

Public vs Private Repository

設定說明適合情境注意
Public任何人都可查看程式碼開源專案、教學示範、個人作品集機密資料仍不能上傳!
Private只有授權使用者可查看尚未公開的商業專案、個人管理工具Private ≠ 安全儲存密碼的地方
!

即使 Repository 設為 Private,也絕對不能將 Token、密碼或 API 金鑰上傳。私人專案仍可能因設定錯誤、權限分享或帳號遭入侵而外洩。

04建立 GitHub Repository

登入 GitHub 後,新建 Repository 的操作步驟:選擇 New repository → 輸入名稱(建議英文小寫連字號格式)→ 填寫說明 → 選擇 Public 或 Private → 可勾選建立 README → 建立。

建議命名(✓)避免的命名(✗)原因
financial-platform新網站中文名稱在部分環境可能有相容問題
financial-learning-tools最後版無意義名稱,未來難以辨識用途
finance-education-sitetest / website123命名與專案用途不符

05建立 README.md

README.md 是專案說明文件,顯示在 Repository 首頁。應包含:專案名稱與目的、主要功能、資料夾結構、本機測試方式、免責聲明。

# 金融程式設計與知識網站實作

本專案是一個金融教育與分析工具網站,包含複利、
貨幣時間價值、債券資料庫、股票分析與互動圖表。

## 主要功能

1. 複利終值計算器(index.html)
2. 現值與終值計算器(time-value.html)
3. 債券 JSON 資料庫(bond-database.html)
4. 股票 CSV 資料清理與報酬分析(python/stock-analysis.py)
5. Chart.js 金融圖表(visualization.html)
6. Plotly 互動圖表(python/stock-charts.py)

## 本機測試

在專案資料夾中執行:

```bash
python -m http.server 8000
```

瀏覽器開啟 http://localhost:8000

## 免責聲明

本專案僅供金融教育、程式設計與情境試算使用,
不構成任何投資建議或報酬保證。

06建立 .gitignore

.gitignore 用來告訴 Git 哪些檔案不應加入版本控制。即使這些檔案存在本機,Git 也不會追蹤或上傳它們。

程式區塊.gitignore(金融網站範例)
# Python 虛擬環境(不上傳,佔用空間且含平台設定)
.venv/
venv/

# Python 快取
__pycache__/
*.pyc

# ⚠️ Streamlit 機密設定(絕對不能上傳)
.streamlit/secrets.toml

# ⚠️ 環境變數(絕對不能上傳)
.env
.env.*
!.env.example          ← 範例檔案(不含實際值)可以上傳

# ⚠️ Token 與金鑰檔案(絕對不能上傳)
token.txt
secrets.json
credentials.json

# 作業系統暫存檔
.DS_Store               ← macOS
Thumbs.db                ← Windows

# 編輯器設定
.vscode/
.idea/

# 暫存與日誌
*.tmp
*.bak
*.log

# 個人或未公開資料
data/private/
data/personal/
!

.gitignore 的限制:若某個檔案已被 Git 追蹤,後來才加入 .gitignore,Git 仍會繼續追蹤。此時需用 git rm --cached 檔案名稱 解除追蹤,再重新 commit。若 Token 已被上傳:不能只刪除最新版本!它仍存在舊 commit 中,應立即 revoke Token → 建立新 Token → 清理 Git 歷史 → 更新本機設定。

07哪些檔案應上傳、哪些絕對不能上傳

✅ 通常可以上傳❌ 絕對不能上傳
index.html 等 HTML 頁面、css/、js/、data/bonds.json(教學用)、images/、python/stock-analysis.py、output/、README.md、.gitignoreGitHub Token / Cloudflare API Token、帳號密碼、API 金鑰、.streamlit/secrets.toml、.env、學生個資、未授權金融資料、.venv/、暫存檔

前端 JavaScript 不能藏密碼

// ✗ 這樣寫是嚴重錯誤!
const apiKey = "sk-xxxxxxxxxxxxxxxxxxxxxxxx";

// 問題:瀏覽器下載整份 JS 檔案給使用者,
// 任何人按 F12 → Sources 就能看到這個金鑰!

// ✓ 正確做法:
// 1. 金鑰放在伺服器端(Node.js / Python 後端)
// 2. 使用環境變數(.env,已加入 .gitignore)
// 3. 使用 Cloudflare Workers Secrets 或 GitHub Secrets
!

凡是寫在 HTML、CSS 或前端 JavaScript 中的資料,都會傳送到使用者的瀏覽器。機密金鑰在前端完全無法真正保密。

08使用 GitHub 網頁上傳檔案(初學者友善方式)

若尚未安裝 Git,可先使用 GitHub 網頁介面上傳檔案。操作方式:進入 Repository → Add file → Upload files → 拖曳檔案 → 填寫 commit 訊息 → 確認提交。

!

不可將所有檔案平放在同一層!應保留 css/style.css、js/calculator.js、data/bonds.json 的資料夾結構,否則 HTML 中的相對路徑會全部失效。

commit 訊息範例

✓ 好的 commit 訊息✗ 差的 commit 訊息差在哪裡
Add compound interest calculator更新不知道更新了什麼
Fix mobile chart layout修改太模糊
新增手機版圖表test沒有意義
修正債券資料篩選邏輯123數字不是說明
i

commit 訊息應簡短說明「修改了什麼」。英文或中文都可以,重點是讓三個月後的自己(或合作者)一眼看懂這次修改的目的。

09使用 Git 與 PowerShell 管理版本

# 確認 Git 已安裝
git --version

# 設定使用者名稱(出現在 commit 紀錄中,首次使用執行一次)
git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"

# 確認設定
git config --list

10完整 Git 第一次上傳流程

# 步驟 1:進入專案資料夾
cd C:\financial-platform

# 步驟 2:初始化 Git(建立 .git 隱藏目錄)
git init

# 步驟 3:查看狀態(確認哪些檔案待追蹤)
git status

# 步驟 4:加入所有檔案到暫存區
git add .

# 步驟 5:建立第一個 commit
git commit -m "建立金融網站初始版本"

# 步驟 6:設定主要分支名稱為 main
git branch -M main

# 步驟 7:連接 GitHub Repository(貼上你的 Repository 網址)
git remote add origin https://github.com/帳號/financial-platform.git

# 步驟 8:第一次推送
git push -u origin main

# ── 若 GitHub 已有 README(非空 Repository),需先 pull ──
# git pull origin main --rebase
# 再重新執行步驟 8
i

本節的完整流程可以到「示範分頁」逐步點擊執行,看每一個指令實際會輸出什麼結果。

11日常更新流程

# 查看修改狀態
git status

# 加入所有修改
git add .

# 建立說明修改內容的 commit
git commit -m "修正債券資料庫篩選邏輯"

# 推送到 GitHub(Cloudflare 會自動重新部署)
git push
!

push 前的安全確認清單:本機測試通過、JSON 格式有效、圖片路徑正確、git status 無可疑機密檔案。

12常用 Git 指令速查表

指令用途初學者常見情境
git init在目前資料夾初始化 Git Repository第一次使用 Git 時執行一次
git status查看修改狀態與準備提交的檔案每次 add/commit 前先確認
git add .將所有修改加入暫存區或 git add index.html 指定檔案
git commit -m "..."建立版本紀錄,附上說明訊息訊息要描述修改內容
git push將本機 commit 上傳至 GitHub第一次:git push -u origin main
git pull從 GitHub 下載最新版本並合併換電腦前或多人協作時先執行
git clone <網址>第一次將 GitHub 專案下載到新電腦複製整個 Repository,含所有 commit 歷史
git log --oneline查看精簡的 commit 紀錄找出需要回復的 commit ID
git revert <commit>建立反向修改 commit(安全回復)不改寫歷史,適合已 push 的情況
git switch -c <分支名>建立並切換到新分支開發新功能時,避免影響 main
git tag -a v1.0 -m "..."建立版本標籤正式上線前標記重要版本

commit / push / pull / clone 的差別

指令資料流向執行時機
git commit修改 → 本機版本每次完成一個邏輯單元的修改
git push本機版本 → GitHubcommit 後,或準備部署前
git pullGitHub → 本機換電腦前、多人協作時先同步
git cloneGitHub → 全新本機資料夾第一次在新電腦取得專案

13branch 分支概念

branch 讓你在不影響正式網站的情況下開發新功能。main 是正式穩定版本,feature/bond-tool 等功能分支在獨立環境中開發,測試通過後再合併回 main。

# 建立並切換到新分支
git switch -c feature/bond-tool

# 在新分支中修改、commit、push...

# 切回 main
git switch main

# 合併功能分支
git merge feature/bond-tool

# 推送合併結果
git push
i

個人小型專案前期可以只用 main。當開始開發大型新功能、測試付費功能、或多人協作時,再引入分支開發流程。

14建立 Cloudflare Pages 專案

!

部署前最重要的確認:GitHub Repository 中必須有 index.html。若沒有,網站根目錄無法正常顯示首頁。

步驟操作說明
① 進入 Cloudflare登入 Cloudflare → Workers & Pages
② 建立應用程式選擇建立應用程式 → Pages → 連接 Git
③ 授權 GitHub授權 Cloudflare 存取 GitHub → 選擇 Repository
④ 設定建置選項Framework preset: None;Build command: 留空;Build output directory: 根目錄或指定資料夾
⑤ 開始部署點擊儲存並部署,等待 Cloudflare 完成
設定項目本書建議說明
Framework presetNone純 HTML/CSS/JS,不需框架
Build command留空不需編譯,直接部署原始檔案
Build output directory根目錄(或指定)index.html 所在位置
!

設定錯誤最常見的結果:部署成功,但網站顯示 404。首要確認:Build output directory 設定是否指向 index.html 所在的資料夾。

15GitHub 更新與 Cloudflare 自動部署

部署類型說明觸發條件
Production deployment正式網站更新push 到 main 分支
Preview deployment預覽網址(不影響正式網站)push 到其他分支(如 feature/xxx)
i

使用 Preview deployment 的好處:在功能分支上測試新工具或新版首頁,確認無誤後才合併到 main,避免直接影響正式網站。

16自有網域設定

Cloudflare Pages 預設提供 https://專案名稱.pages.dev 網址。若要使用自有網域,可在 Pages 專案的 Custom domains 中新增。

比較項目pages.dev自有網域
網址https://financial-platform.pages.devhttps://example.com
成本免費需購買網域(年費)
SEO一般較有利
品牌識別顯示 pages.dev顯示自有品牌名稱

17DNS 基本觀念

DNS(Domain Name System)可以理解為網路的地址簿。使用者輸入 example.com,DNS 告訴瀏覽器應連到哪個服務。

記錄類型說明金融網站常見用途
A 記錄將網域指向 IPv4 位址根網域(example.com)指向 Cloudflare IP
AAAA 記錄將網域指向 IPv6 位址同上,IPv6 版本
CNAME 記錄將一個網域名稱指向另一個www.example.com → financial-platform.pages.dev
TXT 記錄保存文字資訊網域驗證、Google Search Console、Email 安全設定
i

若網域已由 Cloudflare 管理,Pages 綁定自有網域時,系統通常能自動建立所需 DNS 記錄。但仍應確認:無重複記錄、無指向舊網站的舊紀錄、www 與根網域都正常、HTTPS 已啟用。

18HTTPS 與 SSL 憑證

HTTPS 的作用說明
加密傳輸瀏覽器與網站之間的資料傳輸加密,防止被攔截
增加信任瀏覽器顯示「安全」標示,使用者更放心
SEO 加分Google 對 HTTPS 網站有排名優勢
防止警告HTTP 網站在 Chrome 等瀏覽器顯示「不安全」警告
!

Mixed Content 警告:若網站使用 HTTPS,但頁面中載入了 HTTP 的圖片或程式,瀏覽器會顯示混合內容警告。所有資源都應使用 HTTPS 來源。

19相對路徑與絕對路徑

<!-- 相對路徑(推薦用於靜態網站)-->
<link rel="stylesheet" href="css/style.css">
← 從目前頁面位置往下找 css 資料夾

<!-- 根目錄路徑(以 / 開頭)-->
<link rel="stylesheet" href="/css/style.css">
← 從網站根目錄開始找

<!-- ✗ 本機絕對路徑(部署後一定失效)-->
<img src="C:\\financial-platform\\images\\bond.png">
← 部署環境沒有 C:/ 路徑,一定 404!
問題說明修正
本機正常、部署後 404Windows 對大小寫寬鬆,Linux/Cloudflare 嚴格區分統一小寫檔名,路徑與檔名完全一致
圖片不顯示使用了 C:\... 的本機絕對路徑改用相對路徑 images/bond.png
路徑有空格example.com/my folder/image.png 可能失效檔名不用空格,改用連字號

20Token 與機密資料保護

特性Token帳號密碼
可限制權限✅ 只授權特定操作(如 read-only)❌ 通常是全權限
可設有效期限✅ 到期後自動失效❌ 通常長期有效
可單獨撤銷✅ revoke 後立即失效❌ 需要更改密碼
!

Token 外洩的後果:具有寫入權限的 Token 被取得,攻擊者可能修改網站、刪除檔案、竊取私人 Repository 內容。懷疑外洩應立即 revoke,不要等它自然到期。

Token 外洩後的正確處理步驟

  1. 立即 revoke Token(GitHub Settings → Developer settings → Tokens → Revoke)
  2. 建立新 Token(最小必要權限 + 設定有效期限)
  3. 將 Token 移至安全位置(.env 或 secrets.toml,已加入 .gitignore)
  4. 清理 Git 歷史中的 Token 記錄(使用 git filter-repo 或聯繫 GitHub)
  5. 檢查帳號是否有異常操作紀錄
  6. 更新所有使用此 Token 的程式設定

Secrets 與環境變數的正確存放位置

使用場景存放位置加入 .gitignore
本機 Python 開發.env 檔案必須 ✅
Streamlit 後台.streamlit/secrets.toml必須 ✅
GitHub Actions CI/CDGitHub Settings → Secrets不需要(平台管理)
前端 JavaScript❌ 絕對不能存放機密無意義,前端皆可見

21部署前安全檢查清單

類別檢查項目確認方式
安全沒有 Token / 密碼 / API 金鑰git grep -i "token"
安全沒有 secrets.toml 或 .envgit status 查看待提交檔案
安全.gitignore 設定正確確認機密檔案未出現在 git status
程式本機測試通過http://localhost:8000 逐頁確認
程式JSON 格式有效VS Code JSON 格式化工具或 jsonlint.com
部署commit 訊息清楚說明修改內容避免「更新」、「test」等無意義訊息

22十步驟完整部署操作流程

步驟名稱操作說明
整理專案確認 index.html 位置、CSS/JS 路徑、JSON 格式、圖片已上傳、無機密檔案
本機測試python -m http.server 8000
查看 Git 狀態git status
加入暫存區git add .
建立 commitgit commit -m "..."
推送 GitHubgit push
Cloudflare 連接 GitHubWorkers & Pages → 建立應用 → Pages → 連接 Git
檢查部署狀態確認 Cloudflare 顯示成功,開啟 pages.dev 網址
全功能測試首頁、CSS、JS、JSON、圖片、導覽、手機版、Plotly 圖表
綁定網域 + TagCustom domain → DNS → HTTPS;git tag -a v1.0

發布功能測試清單(步驟⑨)

測試項目驗證方式常見問題
首頁開啟 pages.dev 根目錄404 → 確認 index.html 位置
CSS 樣式確認版面顯示正確樣式失效 → 確認 CSS 路徑與大小寫
JavaScript測試計算器按鈕無反應 → F12 Console 查看錯誤
JSON 資料開啟債券資料庫頁面空白 → F12 Network 查看 JSON 是否 404
手機版瀏覽器縮小至 375px版面破版 → 確認 RWD 斷點

23常見部署錯誤與除錯

症狀最可能原因修正方式
首頁 404沒有 index.html,或 Build output directory 設錯確認 index.html 位置;設定正確輸出目錄
CSS 沒有載入路徑大小寫不一致,或 CSS 未上傳統一小寫檔名;確認 HTML 的 href 路徑
圖片本機正常,部署後失效檔名含大寫或使用絕對路徑全部改小寫;使用相對路徑
JSON 無法讀取路徑錯誤或格式有誤F12 Network 查看 404;確認 JSON 格式合法
網站仍顯示舊版瀏覽器快取或部署未完成Ctrl+F5 強制重整;查看 Cloudflare 部署狀態

F12 開發者工具除錯

面板用途金融網站除錯場景
Console查看 JavaScript 錯誤(紅色訊息)計算器無反應、JSON 解析失敗
Network查看所有資源的載入狀態與狀態碼圖片 404、CSS 未載入、JSON 無法讀取
Sources查看下載到瀏覽器的原始碼確認 JS 已更新(清快取)、除錯斷點

24Git 版本回復

方式指令適合場景是否改寫歷史
還原單一檔案git restore --source=HEAD~1 index.html只有某個檔案改錯否(新建修改)
安全回復 commitgit revert <commit>已 push 的 commit 需要撤銷否(新增反向 commit)
強制覆蓋git push --force⚠️ 不建議初學者使用是(危險!改寫歷史)
# 1. 查看 commit 紀錄
git log --oneline
# a1b2c3d 修正債券JSON(這次有問題)
# d4e5f6g 新增金融圖表(這個版本正常)
# h7i8j9k 建立首頁

# 2. 查看某次修改內容
git show a1b2c3d

# 3. 安全回復(建立新的反向 commit,不改寫歷史)
git revert a1b2c3d

# 4. 推送(Cloudflare 自動重新部署穩定版本)
git push
!

不要隨意使用 git push --force。強制推送可能覆蓋遠端歷史,在多人協作環境中極可能造成嚴重問題。初學者應使用 git revert 安全地回復版本。

25Git Tag 版本標籤

# 建立附說明的 Tag
git tag -a v1.0 -m "金融網站第一個正式上線版本"

# 推送 Tag 到 GitHub
git push origin v1.0

# 查看所有 Tag
git tag

# 適合建立 Tag 的時機:
# - 網站第一次正式上線
# - 新增大型金融工具
# - 完成重要改版
# - 重要活動前的穩定版本

26實務案例

(一)首頁部署後 404

某學生將網站結構設為 financial-platform/ → website/ → index.html,但 Cloudflare 輸出目錄設為根目錄,造成找不到首頁。解決:將 index.html 移到根目錄,或將 Build output directory 設為 website。

(二)圖片本機正常、部署後失效

本機圖片檔為 BondCover.PNG,HTML 寫成 <img src='images/bondcover.png'>。Windows 對大小寫寬鬆,本機仍顯示;Cloudflare 部署環境(Linux)嚴格區分大小寫,404。解決:統一小寫檔名、修改 HTML 路徑、commit 並 push。

(三)Token 誤上傳 GitHub(最嚴重)

Python 管理腳本中直接寫死 Token 並已推送到 Repository。錯誤的「修復」方式:只刪除最新版本的 Token——問題是舊 commit 中仍存有 Token,攻擊者仍可取得!正確的緊急處理:立即 revoke Token → 建立新 Token(僅最小必要權限)→ 移至 .streamlit/secrets.toml(加入 .gitignore)→ 聯絡 GitHub 支援或使用 git filter-repo 清理歷史 → 檢查帳號是否有異常操作。

(四)JSON 上架設定字串 vs 布林值

資料中寫成 "active": "false"(字串),但程式使用 if (bond.active) 判斷,字串 "false" 在 JavaScript 中為 truthy,下架資料仍顯示。應改為 "active": false(布林值)並使用 bond.active === true 嚴格比對。這個問題第三章已提及,此處在部署情境中再次確認。

(五)私人 Repository 授權中斷

Cloudflare 原本可讀取私人 Repository,後來 GitHub 授權被取消,新 commit 不再自動部署。處理:Cloudflare → Git 整合 → 重新授權 GitHub → 確認 Repository 存取權 → 重新觸發部署。

27常見 Git 錯誤與除錯

錯誤訊息原因處理方式
fatal: not a git repository目前資料夾不是 Git Repo確認路徑(pwd),或重新 git init
remote origin already exists已設定 origingit remote set-url origin 新網址
rejected non-fast-forwardGitHub 有本機沒有的更新git pull --rebase,解決衝突再 push
merge conflict兩版本修改同一位置手動選擇保留內容,刪除衝突符號,再 commit
authentication failedToken 過期或權限不足更新 Token,或重新設定 Git 憑證
nothing to commit無新修改或被 .gitignore 忽略確認是否儲存檔案,或查看 git status

28網站發布四大檢查表

類別檢查項目
① 程式檢查HTML 可以開啟、CSS 載入正確、JS 無 Console 錯誤、JSON 格式有效、圖片路徑正確、手機版 RWD 正常、所有導覽連結有效
② 金融內容檢查公式計算結果正確、百分比單位正確(5% 輸入 5)、金額格式正確(千分位)、風險提醒完整、沒有「保證報酬」等不當文字、資料來源清楚
③ 資安檢查無 Token / API 金鑰、無帳號密碼、無 secrets.toml 或 .env、無學生個資、.gitignore 設定正確、Repository 存取權限正確
④ 部署檢查GitHub 最新 commit 正確、Cloudflare 部署顯示成功、pages.dev 可正常開啟、自有網域可正常開啟、HTTPS 正常、手機測試自有網域

29關鍵字

GitGitHubRepository 版本控制commitpush pullclonebranch mergetagmain remoteoriginREADME.md .gitignoreCloudflare Pagesdeployment Production deploymentPreview deploymentBuild output directory 自有網域DNSA 記錄 CNAMETXT 記錄HTTPS SSL 憑證相對路徑絕對路徑 TokenSecret環境變數 revoke最小權限原則Mixed Content 快取git revertgit push --force(危險)

30實作練習

(一)基礎操作
  • 建立一個新的 GitHub Repository(public),輸入英文名稱與說明
  • 建立 README.md(含功能列表、本機測試說明、免責聲明)
  • 建立 .gitignore(含 .venv/、secrets.toml、.env 等)
  • 使用 GitHub 網頁上傳 index.html、css/ 和 js/ 資料夾
  • 將 Repository 連接 Cloudflare Pages,完成第一次部署
  • 開啟 pages.dev 網址,逐一確認首頁、CSS、JS 正常
(二)功能修改
  • 將所有 HTML 頁面加入導覽列,commit 並確認部署後正常
  • 修正一張圖片檔名為全小寫,更新 HTML 路徑,確認部署後圖片正常
  • 故意在 bonds.json 中加入一個逗號錯誤,push 後觀察頁面是否顯示錯誤,再修正並重新 push
  • 建立 Git Tag v1.0,推送 Tag 到 GitHub,在 GitHub 查看 Releases
  • 建立 feature/new-tool 分支,在分支中修改首頁標語,產生 Cloudflare 預覽部署
(三)進階挑戰
  • 購買一個網域,在 Cloudflare 綁定自有網域,測試 HTTPS
  • 建立 GitHub Actions workflow,在每次 push 時自動驗證 JSON 格式
  • 建立部署前自動搜尋 Token 關鍵字的腳本(git grep -i token)
  • 測試 git revert:製造一個有問題的 commit,使用 revert 安全回復,確認 Cloudflare 重新部署穩定版

本章沒有可以直接在瀏覽器裡執行的計算工具,所以挑戰任務(04 分頁)改成情境診斷形式——針對「常見部署錯誤」「常見 Git 錯誤」與「Token/資安判斷」三大類設計選擇題,答題後立即看到詳解與正確處理方式。實際動手操作,請照著「示範分頁」的模擬終端機跑一次流程,再到自己電腦真正操作一遍。

本章結語——本章完成了金融網站從本機開發到正式上線的核心流程。Git 負責記錄版本,GitHub 負責保存遠端 Repository,Cloudflare Pages 則負責將靜態網站部署至網路——三者各有分工,共同構成可持續維護的網站發布流程。

讀者已學會:建立 Repository、撰寫 README 與 .gitignore、使用 Git 指令管理版本、將 GitHub 連接 Cloudflare Pages、建立公開網站、綁定自有網域、理解 DNS 與 HTTPS、排除常見部署錯誤、保護 Token 與 Secrets、使用 git revert 安全回復版本,以及建立正式版本 Tag。

下一章進入金融網站 UI、RWD、SEO 與流量分析。讀者將整理網站資訊架構、設定 meta tags 與 sitemap.xml,並整合 Google Search Console、GA4 與 Cloudflare Analytics,使網站不只能上線,也能被搜尋引擎找到、被使用者持續使用。

部署流程模擬終端機

這不是真的終端機,因為瀏覽器沒辦法直接操作你電腦裡的 Git——但下面會照著課本「十、完整 Git 第一次上傳流程」的順序,一步一步顯示每個指令實際會輸出的內容,讓你在動手之前先建立完整的心智模型。按下方按鈕逐步執行,看著一份專案怎麼從本機資料夾,變成一個任何人都能打開的公開網站。

  PowerShell — financial-platform
(按下方按鈕開始逐步執行)

三者分工,一次看懂

Git(本機)記錄版本,不等於雲端
GitHub(雲端)保存 Repository,不執行程式
Cloudflare Pages部署成公開網站,不取代 Git

觀念測驗

共 15 題選擇題,涵蓋本章所有核心觀念。每題作答後會立即顯示解析。

0 / 15 已作答

挑戰任務:情境診斷

這一章沒有可以在瀏覽器裡執行的程式碼,所以挑戰任務改成「情境診斷」——看一段部署設定、終端機錯誤訊息,或資安情境,判斷「接下來會發生什麼事、該怎麼處理」,選完立即看到詳解與正確做法。

任務一:部署錯誤診斷

對應教材「二十六、實務案例」— 首頁 404/圖片失效

難度:理解

下面是一個實際發生過的部署情境:


        

這樣的設定,最可能發生什麼問題?

任務二:Git 指令與錯誤訊息判讀

對應教材「二十七、常見 Git 錯誤與除錯」

難度:診斷

終端機顯示了下面這段訊息:


        

這代表什麼意思,接下來該怎麼做?

任務三:資安與資料判斷

對應教材「二十六、實務案例(三)(四)」— Token 外洩/布林值陷阱

難度:診斷

下面是一個真實會發生的資安或資料情境:


        

這樣做,會發生什麼問題?