這個工具解決什麼問題?
Git 是一個「時光機」——它幫你記住程式碼的每一個版本,讓你可以隨時回到過去、同時開發多個功能、與團隊協作而不會互相覆蓋。
核心概念
版本控制就像「遊戲存檔」
想像你在玩一款 RPG 遊戲:
- Commit(提交):就是「存檔」,記錄當下的狀態
- Repository(倉庫):就是「存檔資料夾」,存放所有存檔
- Branch(分支):就是「不同的遊戲路線」,可以嘗試不同選擇而不影響主線
本地與遠端
- 本地倉庫:你電腦上的存檔
- 遠端倉庫(如 GitHub):雲端備份,也是團隊共享的地方
功能地圖
Git 能幫你做這些事:
📁 基本版本控制
- 儲存程式碼的每個版本(存檔)
- 查看歷史紀錄(看之前存了什麼檔)
- 回到任何之前的版本(讀取舊存檔)
- 比較不同版本的差異(看改了什麼)
🌿 分支管理
- 建立新分支(開新的遊戲路線)
- 切換分支(切換到不同路線)
- 合併分支(把支線成果併入主線)
- 刪除分支(清理不要的路線)
👥 團隊協作
- 上傳到遠端(把存檔傳到雲端)
- 下載別人的更新(同步隊友的進度)
- 解決衝突(當兩人改同一處時怎麼辦)
🔧 進階整理
- 暫存修改(Stash:先把手邊工作收起來)
- 整理提交歷史(讓存檔紀錄更整齊)
- 選擇性提交(只存部分修改)
常見情境與對應功能
情境 1:開始一個新專案
你想做什麼:把現有專案開始用 Git 管理
該用什麼功能:初始化倉庫 + 第一次提交
怎麼跟 AI 說:
「幫我在這個專案初始化 Git,然後做第一次 commit」
情境 2:存檔目前的進度
你想做什麼:完成一個小功能,想記錄下來
該用什麼功能:提交(Commit)
怎麼跟 AI 說:
「幫我 commit 目前的修改,commit 訊息寫『完成用戶登入功能』」
情境 3:要開發新功能
你想做什麼:開發新功能但不影響目前穩定的程式碼
該用什麼功能:建立新分支
怎麼跟 AI 說:
「幫我建立一個新分支叫 feature/user-profile,然後切換過去」
情境 4:功能完成,要合併回主線
你想做什麼:新功能開發完了,要併入主程式
該用什麼功能:合併分支
怎麼跟 AI 說:
「幫我把 feature/user-profile 分支合併到 main」
情境 5:想看之前改了什麼
你想做什麼:回顧歷史紀錄或找某個改動
該用什麼功能:查看日誌 / 比較差異
怎麼跟 AI 說:
「幫我看最近 10 個 commit 的紀錄」
「幫我比較這個檔案跟上一版的差異」
情境 6:改壞了想回到之前的版本
你想做什麼:復原到之前正常的狀態
該用什麼功能:回退 / 復原
怎麼跟 AI 說:
「幫我回到上一個 commit 的狀態」
「幫我把這個檔案恢復成 3 個 commit 之前的版本」
情境 7:寫到一半要緊急切分支
你想做什麼:手邊有未完成的修改,但要先去別的分支處理事情
該用什麼功能:暫存(Stash)
怎麼跟 AI 說:
「幫我把目前的修改暫存起來,我要先切到 main 分支修 bug」
修完 bug 後:「幫我把剛才暫存的修改拿回來」
情境 8:同步遠端倉庫
你想做什麼:把程式碼上傳到 GitHub / 下載最新版本
該用什麼功能:推送 / 拉取
怎麼跟 AI 說:
「幫我把這個分支 push 到 GitHub」
「幫我 pull 遠端的最新程式碼」
進階功能速查
當你準備好深入了解時,Git 還有這些進階能力:
| 功能 | 用途 | 何時會用到 |
|---|---|---|
| Rebase | 重新整理 commit 歷史 | 想讓 commit 紀錄更乾淨 |
| Cherry-pick | 只挑選特定 commit | 只想拿其他分支的某個改動 |
| Bisect | 二分法找 bug | 知道某版本有 bug 但不知道是哪個 commit 造成的 |
| Submodule | 嵌入其他 Git 專案 | 專案需要引用其他獨立維護的專案 |
| Hook | 自動化腳本 | 想在 commit 前自動執行檢查 |
遇到這些需求時,告訴 AI 你想達成什麼目的,它會幫你處理。
常見問題情境
❌ 不小心 commit 了敏感資料
跟 AI 說:
「我不小心把 .env 檔 commit 了,幫我從 Git 歷史中完全移除這個檔案」
❌ Commit 訊息打錯了
跟 AI 說:
「幫我修改最後一個 commit 的訊息,改成『修正登入頁面樣式』」
❌ 合併時發生衝突
跟 AI 說:
「合併時發生衝突了,幫我看一下衝突的內容,然後保留兩邊的修改」
❌ 想取消還沒 commit 的修改
跟 AI 說:
「幫我放棄這個檔案目前的修改,恢復成上次 commit 的狀態」
總結
在 Vibe Coding 時代,你不需要背 Git 指令。你需要的是:
- 知道 Git 能做什麼(版本控制、分支、協作)
- 遇到情境時想到對應功能(要存檔 → commit、要開發新功能 → 開分支)
- 用自然語言描述需求(讓 AI 幫你執行)
有了這些概念,你就能和 AI 搭配,有效率地管理你的程式碼版本!