Git 與 Gitea 入門:從版本控制到自架程式碼託管
如果你是開發者,無論用哪種語言、哪個 AI 輔助工具,遲早都會遇到同一個問題:程式碼怎麼管?
Vibe Coding 時代,Claude Code、Cursor、Copilot 可以幫你快速產出大量程式碼,但如果沒有版本控制,這些程式碼就像沙上城堡——推倒重來很容易,但要回溯、協作、維護,就困難重重。
這篇文章從 Git 的核心觀念開始,一路聊到為什麼我們選擇 Gitea 自架程式碼託管服務,以及 namog.net 實際用 Gitea 管理所有專案的經驗。
Git 是什麼?為什麼需要它?
Git 是目前最主流的分散式版本控制系統,由 Linus Torvalds 在 2005 年為了管理 Linux 核心而開發。它記錄每個檔案的每一次修改,讓你隨時可以回到任何歷史狀態。
集中式 vs 分散式
早期版本控制(如 SVN、CVS)走的是集中式架構:所有程式碼存在中央伺服器,你要先連線才能做事。
Git 是分散式:每個開發者本機都有一份完整的 repository 副本。沒網路照樣可以 commit、branch、查歷史——這在遠端工作、飛機上、咖啡廳裡都無比重要。
核心概念
Git 的學習曲線常常被抱怨,但其實核心概念就幾個:
| 概念 | 說明 |
|---|---|
| Repository | 專案的完整歷史資料庫 |
| Commit | 一次修改的快照,附帶說明訊息 |
| Branch | 獨立開發線,互不干擾 |
| Merge | 將不同分支的修改合併 |
| Remote | 遠端的 repository(例如 GitHub 或自架的 Gitea) |
| Clone / Push / Pull | 本機與遠端之間的同步操作 |
基本工作流程
一個典型的 Git 工作流程長這樣:
# 從遠端下載專案
git clone https://git.namog.net/your-project.git
# 建立新分支開發功能
git checkout -b feature/new-thing
# 做了一些修改後...
git add .
git commit -m "feat: add new thing"
# 推到遠端
git push origin feature/new-thing
# 合併回主分支
git checkout main
git merge feature/new-thing
看起來簡單,但背後的彈性非常大——從個人專案到數千人的開源專案,Git 都撐得住。
為什麼要自架程式碼託管?
有了 Git,下一步就是找地方放遠端 repository。大部分人會想到 GitHub(微軟旗下)、GitLab(獨立公司)或 Bitbucket(Atlassian 旗下)。
這些 SaaS 服務很方便,但有一些限制:
- 私有 repository 的數量與人數限制(免費方案通常有上限)
- 程式碼主權交給第三方——你的智慧財產存在別人的伺服器上
- CI/CD 流量、儲存空間、協作功能常常要付費解鎖
- 無法離線部署——如果網路斷了或服務故障,就無法存取
自架 Git 服務可以解決這些問題。而在自架方案中,Gitea 是最輕量、最好上手的選擇。
Gitea 是什麼?
Gitea 是一個用 Go 語言 寫的輕量級 Git 服務,2016 年從 Gogs fork 出來後快速發展,目前已經是社群最活躍的自架 Git 方案之一。
Gitea 的特色
- 超輕量:二進位檔不到 100MB,記憶體只吃幾十 MB,樹莓派都能跑
- 單檔部署:下載一個 binary 就能啟動,依賴極少
- 支援 SQLite / PostgreSQL / MySQL:小團隊 SQLite 就夠了,不用額外裝資料庫
- 內建 CI/CD:Gitea Actions(相容 GitHub Actions 格式)
- 內建 Issues / PR / Wiki / 專案看板:功能與 GitHub 接近
- Webhook / Git Hooks:可串接外部 CI、Slack、Discord 通知
- OpenID Connect / OAuth2 / LDAP:多種認證方式
- MIT 授權:完全開源,不用擔心授權費
用 Docker 一分鐘啟動 Gitea
這大概是 Gitea 最大的賣點——部署簡單到誇張:
version: '3'
services:
gitea:
image: gitea/gitea:latest
ports:
- "3000:3000"
- "22:22"
volumes:
- ./gitea-data:/data
restart: always
存成 docker-compose.yml,然後:
docker compose up -d
打開瀏覽器看到安裝畫面,填幾個欄位,你的 Git 伺服器就上線了。前後不用三分鐘。
Gitea vs GitHub vs GitLab
| 項目 | Gitea | GitHub | GitLab |
|---|---|---|---|
| 部署方式 | 自架(binary / Docker) | SaaS 託管 | 兩者皆可 |
| 資源需求 | 極低(< 100MB RAM) | 不用管 | 較高(~2GB RAM 建議) |
| CI/CD | Gitea Actions(相容 GitHub Actions) | GitHub Actions | GitLab CI |
| 私有 repo | 無限制 | 有限制(免費方案) | 有限制 |
| 程式碼主權 | 完全自主 | 第三方 | 自架則自主 |
| 套件登錄 | 支援 Container Registry | Packages + Container Registry | Container Registry |
| 語言 | Go | Ruby on Rails | Ruby on Rails |
| 授權 | MIT | 專有軟體 | EE:專有 / CE:MIT |
簡單總結:如果你只需要一個好用、不佔資源、不花錢的自架 Git 服務,Gitea 是最佳選擇。如果你需要企業級的 DevSecOps 功能(進階 CI/CD、安全掃描、合規報告),GitLab 更適合。如果你不想管伺服器,GitHub 最方便。
實際案例:namog.net 為什麼選 Gitea?
namog.net 所有專案——從這個部落格系統、Claude Code 自動化監控腳本、信箱服務、到各種實驗性專案——都放在自架的 Gitea 上(git.namog.net)。
選擇 Gitea 的理由很實際:
- Linode VPS 資源有限(4 核 / 8GB RAM 跑了十幾個服務),GitLab 吃太多記憶體跑不動
- Gitea 的 Container Registry 讓我們在本機 build 好 Docker image,推到 Gitea,Linode 只做
docker pull——避開在 VPS 上直接 build Next.js 的資源炸彈 - 開源生態友善:Gitea Actions 相容 GitHub Actions,工作流設定直接搬過來用
- MIT 授權:不用擔心未來授權變動
如果你也在經營小團隊或個人專案,而且有自架的需求,Gitea 確實是目前平衡「功能完整度」與「資源消耗」最好的方案。
如果對 Git 完全不熟,從哪裡開始?
這篇文章不會變成 Git 完整教學(那需要一本書),但給剛起步的你幾條路徑:
- git-scm.com — 官方文件,有繁體中文版,內建互動式教學
git help— 終端機打這個就有完整說明- 實戰練習:開一個 Gitea(或 GitHub)專案,每天把自己寫的程式碼 commit 上去,習慣了就忘不掉
- 圖形化工具:VS Code 內建的 Git 介面、GitKraken、SourceTree、Fork——選一個順手的
初學者最常踩的坑是「commit 太晚」或「commit 太大」。原則是:一個邏輯變更就是一個 commit,不要等到寫完一整天才 commit。
結語
Git 是現代軟體開發的基礎設施——就像水電一樣,有了它你不太會注意到,但沒有它什麼都做不了。
Gitea 則是把這項基礎設施的門檻降到最低:任何有一台伺服器(或樹莓派)的人,都能在幾分鐘內擁有自己的程式碼託管平台。開發者不再被 SaaS 平台的收費牆或功能限制綁架。
如果你還沒開始用版本控制,今天就是最好的時機。如果你已經在用但還在觀望自架方案,Gitea 值得一試。
namog.net 所有專案皆託管於自架 Gitea 服務 git.namog.net。
推薦閱讀
AI Agent 使用工作坊 — 從環境建置到版本控制,手把手帶你上手
一場 4.5 小時、70% 實作的工作坊。從 VS Code 環境建置、REPL 思考模型、Claude Code 實戰到版本控制手把手,完整學會跟 AI Agent 協作開發。
AI Agent 瀏覽器自動化實戰:從 browser-use 到 Agent-browser,再用 RDPWrap 打造「多桌面」並行工作流
當 AI Agent 已能穩定操作瀏覽器,真正的瓶頸不在模型能力,而在「滑鼠焦點」被搶走的體驗。本文梳理 browser-use → Agent-browser 的技術演進脈絡,並分享一套用 RDPWrap 在單機上開出 AI 專屬桌面的實戰佈局。
從 Evernote 到 Obsidian:為什麼我最後讓 Claude Code 直接幫我管理筆記
十幾年下來從 Evernote、Notion 一路用到 Obsidian,最後發現真正讓工作流跳升的不是筆記軟體本身,而是 Obsidian 有 CLI、所有設定檔都能讓 Claude Code 直接改寫,再加上 Claudian 這個插件把 AI 對話框塞進側邊欄。這篇分享我的筆記軟體使用史,以及為什麼現在做筆記幾乎不再需要切到 ChatGPT。
PinchTab:當 AI Agent 接管你的瀏覽器,效率與安全的兩難抉擇
PinchTab 讓 AI Agent 透過 HTTP API 操控真實瀏覽器,大幅提升自動化效率。但當 Agent 能自動發現並呼叫 API、操作你的真實帳號時,敏感資訊的保護成為必須正視的課題。
訂閱最新文章
每週接收 Claude Code 最新動態、AI 開發工具趨勢與技術分析,直接送到你的信箱。
訂閱成功!歡迎加入,我們會寄一封確認信到你的信箱。
我們尊重你的隱私,隨時可以取消訂閱。
本文由 Namog Vibe Coding 自動化監控系統生成
讀者回應
載入中...