用 AI 寫東西的時候,它會突然問你一些聽起來像外星文的事:「要不要 commit?」「要開一個 branch 嗎?」不是工程師的人看到這些,第一反應常是不敢按,怕按錯把專案弄壞。
這些字都指向同一個東西:Git,一套幫檔案記錄每個版本的工具。你不需要背指令,但要懂三個觀念,因為它們是你跟 AI 協作時的遊戲存檔。AI 把東西改壞的時候,你靠這個讀檔。
Git 安全網三件事
建立本機安全存檔點。
把未提交的改壞內容拉回來。
用新提交抵消已提交的錯誤。
commit 是存檔,push 是上傳,.gitignore 是「這些不准上傳」
先分清兩個東西。Git 在你的電腦上管檔案版本;GitHub 是雲端的倉庫,放副本、給別人看。你可以只用 Git 不用 GitHub,反過來不行。
commit 就是存檔點。AI 幫你做好一個能動的東西(例如登入頁面),這時候說「幫我 commit」。它會把目前所有檔案的狀態封存成一個點,之後不管 AI 怎麼改壞,你都能回到這個點。習慣是每做好一個小東西就存一次,不要等到一大包才存。存檔點越密,能退的位置越多。
push 是上傳到雲端。存了檔之後才有東西可以上傳,上傳的意義是備份和分享。
.gitignore 是一份「這些檔案不准追蹤、不准上傳」的清單。在 push 之前一定要有這個檔。裡面至少要列 .env,放 API 金鑰和密碼的那個檔。金鑰跟著程式一起上了公開的 GitHub,等於把家門鑰匙貼在門口,這是一旦發生就收不回來的事。hook 擋金鑰那篇會講怎麼用工具自動擋。
AI 改壞了:還沒存檔用 restore,存了檔用 revert
AI 把東西改壞是日常,不是意外。遇到的時候不用逐行找問題,直接讀檔。兩種情況。
還沒 commit:說「restore」。AI 剛改了一堆檔案,你一跑發現壞了,而這批修改還沒存檔。對它說:「剛才的修改我不要了,restore 回上一個存檔點。」它會執行 git restore,所有未存檔的變動消失,回到乾淨的起點。這個動作是不可逆的,被丟掉的修改回不來,所以確定不要了再說。
已經 commit 了:說「revert」。你存了檔才發現這版是錯的。對它說:「把剛才那個 commit revert 掉。」它會執行 git revert,產生一個新的存檔點,內容是把那次修改反過來。歷史紀錄裡兩個點都在,一個「改錯了」、一個「改回來了」。這在團隊裡很重要,沒有人的進度會憑空消失,每個人都看得到發生了什麼。
Claude Code 的使用者還有第三個工具:/rewind,或按兩下 Esc。它會列出你這場對話裡每一次送出的訊息,讓你選一個點,把程式碼、對話、或兩者退回那時候的狀態。這比 Git 快,適合「剛剛那三步我不要了」。但要知道它的限制,官方文件寫得很清楚:它只追蹤 AI 用編輯工具改的檔,用指令列刪掉、搬走的檔(rm、mv、cp)不追蹤;子代理改的通常也不追蹤;而且它是這一場的快速復原,不是版本控制的替代品,長期的歷史還是靠 Git。
動手做
從沒用過 Git、專案在本機的,一句話交給 AI:
幫我把這個專案放進 Git: 1. 建立 .gitignore,至少排除 .env、*.key、*.pem、node_modules 或其他套件資料夾。 2. 做第一個 commit,訊息寫「初始版本」。 3. 告訴我:以後我說「存檔」你就 commit,說「上一步不要了」你就 restore,說「那個存檔是錯的」你就 revert。每次做這三件事之前先告訴我你要做什麼,做完告訴我結果。 4. 不要 push 到任何地方,除非我明確說要。
有 Git 了、想練習還原的,故意改壞一次再救回來。叫 AI 做一個小修改(例如改一個標題),確認能動,說「存檔」。再叫它做一個修改,然後說「上一步不要了,restore」,看檔案是不是回來了。最後再改一次、存檔、然後說「那個存檔是錯的,revert」,看歷史裡是不是多了一個「改回來」的點。做過一輪,你以後就不怕這三個字了。
不想看終端機的,GitHub Desktop 這類有圖形介面的工具可以按按鈕做 commit 和 revert,觀念完全一樣。
做對了的樣子:你能用自己的話說出 commit、restore、revert 的差別(存檔、丟掉沒存的、用新存檔抵消舊的);每做好一個小功能就有一個 commit,不是一天一個;.gitignore 裡有 .env;你做過一次 revert,看過歷史裡那個「改回來」的點。
今天最該做的一件事:打開你目前的專案,看有沒有 .gitignore,裡面有沒有 .env。
commit 是存檔點,做好一個小東西就存一次。還沒存,restore 丟掉(不可逆);存了,revert 用新存檔抵消(歷史都在)。.gitignore 裡一定要有 .env。/rewind 很方便,但它不追蹤所有改動,也不取代 Git。
站內延伸
- 別讓 AI 在主線上試錯、多個 AI 怎麼平行 → branch 與 worktree
- 金鑰怎麼自動擋在提交之前 → hook 擋金鑰
- 存檔點觀念用在文件上 → 找方法AI 留痕與交接
來源: git-restore、git-revert(官方文件);Claude Code:Checkpointing(/rewind、Esc Esc、不追蹤指令列改動、不是版本控制的替代品)。
它改壞是日常,
你要會讀檔
什麼時候看這張:它問你「要不要存檔」,你不敢按,怕按錯把專案弄壞。
- 做好一個小東西就存一次,存得越密能退的位置越多
- 金鑰跟著程式上了公開的倉庫,就收不回來
- 對話裡的快速倒帶很方便,但它不追蹤所有改動
第一個動作打開你目前的專案,看那份「不准上傳」的清單裡有沒有金鑰檔。沒有就補上,三分鐘。