Agentic Research
首頁/學習/Git 與 GitHub:AI 工具一直叫你去 clone,那到底是什麼

Git 與 GitHub:AI 工具一直叫你去 clone,那到底是什麼

2026/09/309 分鐘Bryan Chan最後更新 2026/09/30
這篇屬於學習主題入門Git開發工具

你裝一個 AI 編程工具,說明第一句是「clone 這個 repo」。 你裝一個 Agent,它說「把你的專案初始化成 git repo」。 你想裝一個技能,教學寫「fork 之後改 SKILL.md 再提 PR」。

這些說明都假設你已經懂 Git。 但沒人解釋過它,因為對寫說明的人來說它像空氣。

這篇解釋五個詞,以及為什麼不寫程式的人也需要懂其中三個。

先講 Git 解決什麼問題

想像你在改一份重要文件。你的做法可能是:

報告.docx
報告_最終.docx
報告_最終_v2.docx
報告_最終_v2_真的最終.docx
報告_最終_v2_真的最終_老板改過.docx

Git 就是用來取代這堆檔案的。它做三件事:

  1. 記錄每一次改動的完整歷史,而且不是存整份副本,是存「這次改了哪幾行」
  2. 讓你可以隨時回到任何一個過去的狀態
  3. 讓多個人(或多個 Agent)同時改同一批檔案而不會互相蓋掉

第三件事是 AI 工具為什麼一直提它:Agent 會改你的檔案,而你需要能復原。

一、Repository(repo,儲存庫)

一個被 Git 追蹤的資料夾。 就是這樣。

它看起來跟普通資料夾一模一樣,差別只在裡面有一個隱藏的 .git 目錄 —— 所有歷史都存那裡。

cd 你的專案資料夾
git status          # 看這個資料夾是不是 repo,以及有什麼變動

如果它說 not a git repository,那它就只是一個普通資料夾。

為什麼 AI 工具要你把專案變成 repo:因為這樣它改壞了東西你能復原。一個沒有 git 的資料夾,被 Agent 改錯就是改錯了。

把普通資料夾變成 repo:

git init

二、Commit(提交/快照)

一次「存檔」,但帶一句說明。

git add .                              # 把變動放進「準備存檔」區
git commit -m "修正登入頁的錯字"        # 存檔,附一句說明

每個 commit 有一個獨一無二的編號(一長串字母數字,像 a3f9c21),以及誰在什麼時候改了什麼的完整記錄。

關鍵觀念:commit 不是「存檔」,是「一個可以回去的點」。 你可以隨時回到任何一個 commit 的狀態。

git log --oneline        # 看歷史,一行一個 commit
git diff                 # 看「我改了但還沒 commit」的東西

對 AI 工具使用者,git diff 是最有用的一個指令。 Agent 說它改好了,git diff 讓你在接受之前看到它到底改了哪幾行。見 Agent 到底看得到什麼。

三、Branch(分支)

一條獨立的修改線。

預設的那條通常叫 main(舊專案可能叫 master)。你可以開一條新分支去試一個想法,試壞了直接丟掉,main 完全不受影響。

git branch                    # 看有哪些分支,* 是你現在所在的那條
git switch -c 試個想法         # 開一條新分支並切過去
git switch main               # 切回主線

為什麼這跟 AI 工具有關:讓 Agent 在一條分支上工作,是最便宜的防護。它做壞了,你切回 main,什麼都沒損失。這比「備份整個資料夾」簡單得多,也比「祈禱它不要改壞」可靠。

本站在 子 Agent 隔離 裡講的是同一個思路的進階版。

四、Clone 與 Fork

這兩個詞常常被混用,但方向相反。

Clone:把別人的 repo 複製到你自己的電腦上。

git clone https://github.com/某人/某專案.git

這只是「下載」,但下載的是完整歷史,不是一個快照。你 clone 下來之後可以在本地隨便改,不需要任何人的許可,也影響不到原專案。

Fork:在 GitHub 上把別人的 repo 複製一份到你的帳號下。

Fork 是 GitHub(網站)的功能,不是 Git(工具)的功能。它讓你在伺服器上有一份自己的副本,然後你可以改它、並且請求原專案接受你的改動。

典型的技能安裝流程就是這樣:

fork 到自己帳號 → clone 自己那份到本機 → 改 → commit → push → 提 PR

如果你只是想用一個東西,clone 就夠了,不需要 fork。 Fork 的意義是「我想把改動送回去」。

五、Pull Request(PR,合併請求)

「我改了這些,請你考慮併進去。」

它不是一個指令,是 GitHub(或 GitLab 等平台)上的一個頁面:列出你改了什麼、讓別人審查、討論、最後決定要不要接受。

你什麼時候會遇到它:

  • 你想給一個開源專案貢獻東西
  • 你在一個團隊裡,改動要經過同事審查才能進主線
  • 你讓 Agent 幫你改一個 repo,它可能開一條分支然後叫你提 PR —— 這時候 PR 是「它做完了,等你審」的意思

你大概率不需要自己提 PR。 但你需要看得懂那個頁面:左邊是原本的,右邊是改後的,紅色是刪掉的行,綠色是加上的行。

六、不會寫程式的人需要懂哪三個

repo、commit、branch。

因為:

  • repo 決定了你的檔案有沒有歷史可查。AI 工具要求它,是因為沒有它就沒有復原能力。
  • commit 是「存一個可以回去的點」。在讓 Agent 動任何重要檔案之前先 commit 一次,這是成本最低、回報最高的防護。
  • branch 讓你在不影響主線的情況下試錯。

clone/fork/PR 是「跟別人協作」才需要的。你自己在電腦上用 AI 工具,前三個就夠。

七、五個最常用的指令

git status                    # 現在什麼情況(最常打,沒有副作用)
git diff                      # 我改了什麼但還沒存
git add . && git commit -m "說明"   # 存一個可以回去的點
git log --oneline -10         # 最近十個存檔點
git switch -c 新分支           # 開一條線去試

git status 與 git diff 是完全安全的 —— 它們只讀不寫,隨便打。先養成打 git status 的習慣,你就已經比多數人安全了。

八、一個錯誤觀念

「Git 很難,是工程師的東西。」

Git 的完整功能確實複雜(rebase、cherry-pick、merge 衝突處理)。但上面那五個指令覆蓋了 AI 工具使用者絕大多數的需求,而且它們的作用可以一句話說清楚:讓你能復原。

你不需要成為 Git 專家。你需要的是在讓 Agent 改東西之前,知道自己有退路。

關於退路本身,Checkpoint(檢查點) 這個詞在 AI 工具語境下有另一層意思(工具自己存的狀態快照),跟 git commit 是兩回事但目的相同 —— 見 Checkpoint(檢查點)。

下一步