← 返回文章列表
工作流與技巧 by Namog

Git 與 Gitea 入門:從版本控制到自架程式碼託管

#Git #Gitea #版本控制 #自架服務 #Vibe Coding #開發工具 #DevOps

如果你是開發者,無論用哪種語言、哪個 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

項目GiteaGitHubGitLab
部署方式自架(binary / Docker)SaaS 託管兩者皆可
資源需求極低(< 100MB RAM)不用管較高(~2GB RAM 建議)
CI/CDGitea Actions(相容 GitHub Actions)GitHub ActionsGitLab CI
私有 repo無限制有限制(免費方案)有限制
程式碼主權完全自主第三方自架則自主
套件登錄支援 Container RegistryPackages + Container RegistryContainer Registry
語言GoRuby on RailsRuby 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 的理由很實際:

  1. Linode VPS 資源有限(4 核 / 8GB RAM 跑了十幾個服務),GitLab 吃太多記憶體跑不動
  2. Gitea 的 Container Registry 讓我們在本機 build 好 Docker image,推到 Gitea,Linode 只做 docker pull——避開在 VPS 上直接 build Next.js 的資源炸彈
  3. 開源生態友善:Gitea Actions 相容 GitHub Actions,工作流設定直接搬過來用
  4. 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

讀者回應

0/500

載入中...


推薦閱讀

工作流與技巧

AI Agent 使用工作坊 — 從環境建置到版本控制,手把手帶你上手

一場 4.5 小時、70% 實作的工作坊。從 VS Code 環境建置、REPL 思考模型、Claude Code 實戰到版本控制手把手,完整學會跟 AI Agent 協作開發。

工作流與技巧 Premium

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 自動化監控系統生成