Git 版本控制入門 — 用遊戲存檔來理解版本管理
你有玩過 RPG 遊戲嗎?在打大魔王之前,你一定會先「存檔」,對吧?這樣萬一打輸了,可以讀取存檔重來,不用從頭開始。
Git 做的事情跟遊戲存檔的概念幾乎一模一樣,只是它存的不是遊戲進度,而是你的程式碼進度。
為什麼需要版本控制?
在學 Git 之前,先來想想沒有版本控制會發生什麼事。
沒有 Git 的世界
假設你在寫一份報告,你可能會這樣命名你的檔案:
報告.docx
報告_修改版.docx
報告_最終版.docx
報告_最終版2.docx
報告_真的最終版.docx
報告_老闆改完版_final_v3.docx
看起來很熟悉對吧?這就是沒有版本控制的痛苦。你不知道哪個才是最新的,也不知道每一版改了什麼。
有 Git 的世界
有了 Git,你只需要一個檔案。每次你做了修改覺得滿意,就「存一個檔」(在 Git 裡叫做 commit)。Git 會自動幫你記錄:
- 什麼時候存的
- 改了什麼東西
- 誰改的
- 為什麼改(你留的備註)
想回到之前的版本?隨時可以「讀檔」回去。
Git 的核心概念 — 用遊戲來比喻
| 遊戲概念 | Git 的概念 | 說明 |
|---|---|---|
| 存檔 | Commit | 記錄當前的程式碼狀態 |
| 讀取存檔 | Checkout / Reset | 回到之前某個版本 |
| 存檔列表 | Log | 查看所有的存檔記錄 |
| 不同路線的存檔分支 | Branch | 在不影響主線的情況下嘗試新東西 |
| 合併多條故事線 | Merge | 把分支的修改合回主線 |
| 雲端同步存檔 | Push / Pull | 把存檔上傳到雲端 / 從雲端下載 |
| 多人連線遊戲存檔 | Remote Repository | 大家共用的雲端存檔空間 |
Commit — 遊戲存檔
Commit 是 Git 最核心的操作。每次 commit 就像按下遊戲的「存檔」按鈕。
一次 commit 包含什麼?
commit a1b2c3d
Author: Aaron <aaron@example.com>
Date: 2026-02-07
feat: 新增會員登入功能
- commit ID(
a1b2c3d):每個存檔的唯一編號 - Author:誰做的修改
- Date:什麼時候存的
- 訊息:這次改了什麼(你自己寫的備註)
好的 commit 訊息很重要
就像遊戲存檔時你會寫備註「打完森林 Boss 了」或「拿到傳說裝備」,commit 訊息也應該清楚說明你做了什麼:
✅ 好的 commit 訊息:
feat: 新增購物車功能
fix: 修正登入頁面密碼驗證錯誤
style: 調整首頁 Banner 間距
❌ 不好的 commit 訊息:
update
修改
asdfgh
Branch — 不同路線的存檔
玩 RPG 的時候,你可能會在選擇劇情分歧前先存個檔,然後分別嘗試不同路線。
Git 的 Branch(分支) 就是這個概念!
一個常見的使用情境
假設你的網站目前運作正常(主線劇情 = main 分支)。老闆突然說要加一個新功能。
你可以:
- 開一個新分支:
feature/shopping-cart(存個檔,走另一條路線) - 在新分支上開發:隨便怎麼改都不會影響主線
- 開發完成後合併回主線:新功能測試 OK,就把這條路線的進度合回去
main: A --- B --- C --------- F
\ /
feature: D --- E
這樣做的好處是:
- 主線的程式碼隨時都是穩定可用的
- 你可以放心嘗試新東西,不怕弄壞
- 多個人可以同時在不同分支上開發
常用的 Git 指令
不用怕,最常用的指令其實就那幾個。以下用遊戲比喻來幫助記憶:
開始新遊戲
git init
在目前的資料夾建立一個新的 Git 儲存庫。就像開始一場新遊戲。
查看目前狀態
git status
看看有哪些檔案被修改了但還沒存檔。就像打開遊戲選單確認目前的進度。
選擇要存檔的內容
git add index.html
git add . # 全部都加
告訴 Git「這些修改我要存」。就像你在存檔前選擇「要存哪些進度」。
實際存檔
git commit -m "feat: 新增首頁"
把剛才 add 的修改正式存檔。-m 後面是存檔的備註。
查看存檔記錄
git log
看所有的歷史存檔。從最新的開始列出。
上傳存檔到雲端
git push
把你的存檔同步到遠端(GitHub)。就像把遊戲存檔上傳到雲端。
從雲端下載最新存檔
git pull
把遠端的最新進度拉回來。就像在另一台電腦上繼續玩,先從雲端下載存檔。
GitHub — 雲端存檔空間
你可能聽過 GitHub。它跟 Git 有什麼關係?
簡單說:
- Git = 存檔系統本身(軟體工具)
- GitHub = 雲端存檔空間(線上服務平台)
Git 是在你自己的電腦上運作的。但如果你想要:
- 在不同電腦之間同步程式碼
- 跟其他人一起寫程式
- 有個備份避免電腦壞掉資料遺失
你就需要一個「雲端空間」來存放你的程式碼。GitHub 就是最受歡迎的選擇之一(其他還有 GitLab、Bitbucket 等)。
我自己每天的工作流程就是:在本機用 Git 存檔 → git push 上傳到 GitHub → 同事 git pull 下載最新的程式碼 → 繼續開發。就像大家在玩同一個多人連線遊戲,共用同一份存檔。
常見問題 Q&A
Q:Git 跟 GitHub 有什麼差別?
Git 是工具(像 Word),GitHub 是平台(像 Google Drive)。你用 Git 做版本控制,用 GitHub 來存放和分享你的 Git 儲存庫。
Q:我不是工程師,也需要學 Git 嗎?
如果你會寫任何需要版本管理的檔案(程式碼、文件、設定檔),Git 都很有用。很多設計師、作家也在用 Git 管理他們的作品。
Q:一定要用命令列嗎?有沒有圖形介面?
有的!很多工具提供 Git 的圖形介面,像是:
- VS Code 內建的 Git 功能(非常好用)
- GitHub Desktop(免費、簡單、適合新手)
- Sourcetree(功能完整)
一開始用圖形介面完全沒問題,等熟悉了概念之後,再慢慢學命令列的效率會更高。
Q:commit 要多頻繁?
沒有標準答案,但一般來說:完成一個小功能就存一次。不要等到寫完一整天的程式碼才存檔——萬一中間出問題,你會損失很多進度。
就像打遊戲,聰明的玩家打完每一場戰鬥都會存檔,而不是打到最後才存。
結語
回顧一下今天學到的:
- Git = 程式碼的存檔系統
- Commit = 存檔
- Branch = 分支路線
- Merge = 合併路線
- Push / Pull = 上傳 / 下載雲端存檔
- GitHub = 雲端存檔空間
Git 是工程師每天都在用的基本工具。學會它之後,你就再也不用擔心「改壞了回不去」的問題了。就像有了遊戲存檔功能,你可以更大膽地嘗試,因為你知道——隨時可以回到之前的進度。
站內相關文章: