版本管理名字瞎寫:三個 refine, 和一堆 .DS_Store

作者:瞬時電壓
日期:2026年4月10日 上午12:00
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

Vibe Coding 要搞好 Git:四條基本功幫你避開 2.7GB 倉庫同三個 refine 嘅混亂

整理版摘要

呢篇文章係作者 Vibe Coding 覆盤手記系列嘅第三篇,佢自己唔係工程師出身,用 Git 只係識得 git add 同 git commit,以為夠用,點知做到第 20 日就發現倉庫大到 2.7GB、歷史記錄入面有三個「refine」完全分唔到邊個打邊個、仲有一堆 .DS_Store 同 node_modules 塞爆咗個 repo。

作者透過呢次覆盤,總結出四條 Git 基本功:第一係一開始就要整 .gitignore,唔好等 node_modules 同 Excel 原始數據入曬倉庫先嚟後悔;第二係用咗 Git 就唔好用文件名後綴 -v1、-v2 去管版本,兩套系統並行只會令你同 AI 都亂曬籠;第三係每次提交都要寫清楚 commit message,最好叫 AI 幫手睇改咗啲乜,唔好求其寫「refine」就算;第四係要喺關鍵節點打 tag,例如評審版、最終版,咁之後 git diff 就唔使喺 30 條記錄入面揾。

整體結論係:呢四樣嘢冇一樣係高深技術,但對於唔係工程背景嘅 Vibe Coder 嚟講,正正就係最容易忽略嘅隱性知識。AI 唔會主動教你,你要自己識得用先唔會踩坑。

  • Git 倉庫因為冇 .gitignore,塞滿咗 node_modules、Excel 原始數據同 .DS_Store,體積大2.7 GB,其中真正要跟蹤嘅源碼只佔 3%。
  • 用文件名後綴 -v2、-v3 去管版本,同 Git 版本管理同時使用,造成雙重混亂:AI 唔知邊個係最新,自己都記唔清。
  • Commit message 寫「refine」等於冇寫,回溯時要逐個 git diff 去揾,浪費大量時間;應該用前綴 + 範圍 + 描述,或者叫 AI 幫手生成。
  • 喺關鍵節點打 tag(例如 v0.5-first-review)可以快速定位版本,配合 git diff 精確對比變更,唔使靠記憶去估。
  • 四條規則都係基本功,但對非工程背景嘅 Vibe Coder 嚟講好易忽略;AI 會執行指令但唔會糾正壞習慣,所以自己要有意識去用。
值得記低
Prompt

生成 .gitignore 嘅 prompt

同 AI 講:「我嘅項目用 Python + Node.js + macOS,幫我生成一個 .gitignore」就可以得到覆蓋全面嘅模板。

Prompt

自動寫 commit message 嘅 prompt

每次準備提交之前,對 AI 講:「幫我睇嚇今次改咗啲乜,寫一個提交說明」,佢會根據代碼差異生成清晰嘅信息。

流程

Git tag 命名範例

數據管線跑通:v0.1-data-pipeline;頁面佈局完成:v0.2-layout-done;第一次審計通過:v0.3-audit-pass;配圖集成完成:v0.4-images-done;提交評審版:v0.5-first-review;最終交付:v1.0-final

筆記

.gitignore 範例內容

# macOS 系統文件\n.DS_Store\n# Node.js 依賴\nnode_modules/\n# 原始數據\ndata/raw_data_rednote/*.xlsx\n# 導出產物\nfinal-slides/exports/

整理重點

兩大困惑:佢哋指向同一個問題

作者做咗個項目 20 日,想返去「嗰個圖表顏色仲未改嘅版本」,打開 Git 歷史見到三條連續嘅提交:refine、refine、refine。佢哋之間有咩分別?唔知。打開方式係逐個 git diff 睇代碼差異,對於一個 4000 幾行嘅 HTML 檔案嚟講,等於大海撈針。

三個 refine 並排企喺度,好似三扇一模一樣嘅門,後面係咩只有打開先知

另一個困惑發生得更早。第一次行 git status,終端輸出咗一堆檔案變更,其中有一個叫 .DS_Store 嘅檔案顯示「被修改了」。作者冇改過任何叫呢個名嘅嘢,甚至唔知佢係乜。搜索後先知:呢個係 macOS 系統自動生成嘅隱藏檔案,記錄圖標排列方式,同項目完全無關,但 Git 認真咁跟蹤佢嘅每一次變化。

整理重點

2.7 GB 嘅倉庫體檢:97% 係垃圾

覆盤時做咗一次倉庫體檢,結果大震驚。Git 倉庫體積 2.7 GB,跟蹤嘅檔案總數 2517 個,其中真正需要跟蹤嘅源碼檔案大約 78 個,佔 3%。

  1. 1 排名第一係 node_modules,2243 個檔案,佔近九成。呢啲係 npm install 自動下載嘅依賴,可以隨時重新生成,唔需要版本管理,仲包含大量二進制檔案,Git 根本展示唔到變化內容。
  2. 2 排名第二係 29 個原始 Excel 數據檔案(202403.xlsx 到 202602.xlsx),每個幾 MB 到幾十 MB。佢哋幾乎唔會修改,就算改咗 Git 都話唔到你邊個儲存格由 54 變咗 55。
  3. 3 跟住係 24 個導出嘅 PNG 截圖同 PDF 檔案,呢啲都係腳本自動生成嘅產物,行一次命令就重新生成到。
  4. 4 仲有 .DS_Store,每個文件夾都可能有一個,每次喺 Finder 打開文件夾就會「修改」,製造噪音。
  5. 5 仲有 Excel 臨時檔案(檔名 ~$ 開頭),係 Excel 打開檔案時自動創建嘅鎖定檔案,關咗 Excel 就會消失。

原因簡單到尷尬:項目一開始冇 .gitignore

.gitignore 係一個放喺項目根目錄嘅純文字檔案,作用只有一個——話畀 Git邊啲檔案唔使理」。寫法好簡單,例如:

.gitignore 範例 plaintext
# macOS 系統文件
.DS_Store
# Node.js 依賴
node_modules/
# 原始數據
data/raw_data_rednote/*.xlsx
# 導出產物
final-slides/exports/

補返 .gitignore 之後,Git 需要關注嘅檔案從 2517 個降到 173 個,減咗 93%。但可惜,已經入咗 Git 歷史嘅檔案唔會自動消失,.git 文件夾依然有 2.7 GB。教訓好清楚:.gitignore 唔係項目做到一半先補嘅嘢,佢應該係 git init 之後創建嘅第一個檔案。你甚至唔使自己諗,同 AI 講「幫我生成一個 .gitignore」,十秒就搞掂。

整理重點

兩套版本系統:文件名後綴 v2、v3 同 Git 並行,係雙重混亂

作者覆盤時打開 slides 文件夾,見到呢個檔案列表:Color-Overview-20260402.htmlColor-Overview-20260402-v2.htmlColor-Overview-20260402-v3.htmlColor-Overview-20260402-v4.html、Color-Overview-20260402-v5.html、Color-Overview-20260403.html、Color-Overview-20260403-v1.html,仲有個 archive 文件夾裝更早嘅版本。

呢個項目有 30 次 Git 提交,即係 Git 已經幫我記錄每一次修改,但我同時用檔名後綴 -v2、-v3 管版本,有一種又要又要嘅分裂美

兩套版本系統帶嚟三個問題

  1. 1 想揾返之前某個版本,agent 唔知應該睇 Git 歷史定揾檔名。-v3 同 -v4 嘅差別記錄喺 Git 入面?定係只係手動複製一份改咗名?兩種情況都有,好混亂。
  2. 2 每個版本都係完整拷貝。HTML 檔案 4000 幾行,每創建一個 -v2、-v3 就係 4000 幾行嘅全量複製,Git 仲要跟蹤呢啲拷貝嘅變更,倉庫體積倍數增長。
  3. 3 AI 都會被搞亂。當你喺新嘅 AI 對話話「基於最新版本修改」,AI 要先判斷邊個係最新。20260403.html 同 20260403-v1.html 邊個更新?光睇檔名冇辦法確定,連你自己有時都記唔清。

用檔名管版本係冇 Git 之前嘅做法。一旦開始用 Git,就應該徹底放棄 -v1、-v2 呢套命名方式。兩套系統並行唔係雙重保險,係雙重混亂(除非有新舊版本比較嘅需求,但呢啲需求可以開 branch)。

整理重點

三個 refine:Commit message 唔好亂寫,畀 AI 幫手就得

作者嘅 Git 提交記錄有呢段:f7e60bd preoject retro & QAs;17132e7 revision;91c1b54 refine;b7b15b9 refine & email draft;e939d34 refine;6fc0a77 add cover/end;2cdb53e 精裝修,no cover page。三個 refine 同一個 revision 幾乎佔咗一半。兩日後想返去「嗰個圖表顏色仲未改嘅版本」,完全無從入手。

三個 refine 裏邊邊個改咗圖表顏色?邊個改咗文字?邊個調咗間距?冇任何線索

提交說明(commit message)作者一直知道重要,但人一懶起上嚟真係乜都做得出,包括亂寫。尤其係 Vibe Coding 場景下,迭代速度好快,AI 幫你寫 code,一日可能產生 5 到 10 次提交。每條記錄差異好細微,如果都係「refine」,呢啲細微差異就淹沒咗。新開嘅 AI 對話想知道之前發生咩事,睇到三個 refine 都冇用。

對比下:之前係「refine」「refine」「refine」;之後係「style(1.2): 統一 Color 為 Colorway 術語」「content(summary): 添加頁面結論文字」「fix(2.2): 修正男裝聚類名稱」。後者多花十幾秒,但三個月後仍然知每次改咗乜。實際操作中,你甚至唔使諗——每次準備提交前對 AI 講「幫我睇嚇改咗啲乜,寫一個提交說明」,佢會根據代碼差異自動生成,30 秒搞掂。

寫畀未來嘅自己睇:兩週後、兩個月後、下一個項目開始時返嚟揾參考嘅你——佢哋都會感謝今日多花 30 秒寫咗一句有信息量嘅話

整理重點

Tag:幫重要時刻貼書籤,唔使再喺 30 條記錄入面揾

作者嘅項目有 30 次提交,0 個 tag。Tag 係乜?如果 Git 倉庫係一本書,commit 就係每次按儲存鍵,tag 係喺某一頁貼一個便利貼書籤。例如喺 add cover/end 呢個提交貼 v0.5-first-review,喺最終版貼 v1.0-final。

書籤唔會改變書嘅內容,佢只係幫你快速翻到嗰一頁

假設老細問:「由第一次畀我睇到最終版,中間改咗幾多嘢?」如果冇 tag,你要喺 30 條記錄入面揾邊條對應「第一次評審版」、邊條對應「最終版」,只能靠記憶。如果有 tag,一條 git diff v0.5-first-review..v1.0-final 就搞掂。

打 tag 嘅命令 bash
git tag v1.0-final
git tag v0.5-first-review 6fc0a77

咩時候該打 tag?唔使每次提交都打,失去標記重點嘅意義。對於兩週半嘅項目,大概呢啲時刻值得標記:數據管線跑通(v0.1-data-pipeline)、頁面佈局完成(v0.2-layout-done)、第一次審計通過(v0.3-audit-pass)、配圖集成完成(v0.4-images-done)、提交評審版(v0.5-first-review)、最終交付(v1.0-final)。30 次提交,5 到 8 個 tag 就夠。

本文是"Vibe Coding 覆盤手記"系列的第 3 篇,共 5 篇。

TLDR 四條 Git 規則能讓 vibe coding 項目少踩大部分坑:① 是 後的第一個文件——讓 AI 根據你的技術棧生成,10 秒搞定,否則 node_modules.DS_Store、Excel 原始數據全部進倉庫,我的項目因此膨脹到 2.7 GB;② 用了 Git 就徹底放棄文件名後綴 、——一個文件一個名字,所有歷史交給 Git,想安全實驗就開 branch,兩套版本系統並行不是雙保險,是雙重混亂;③ 讓 AI 幫你寫 commit message——每次提交前說"幫我看看改了什麼,寫個提交說明",30 秒生成一條具體信息,比三個連續的"refine"有用一萬倍;④ 在關鍵節點打 tag——評審版打 v0.5-first-review,最終版打 v1.0-final,之後 git diff v0.5..v1.0 一條命令精確對比,不用在 30 條提交記錄裏翻找。


項目做到第 20 天,我想回到"那個圖表顏色還沒改的版本"。打開 Git 歷史,看到三條連續的提交記錄:refine、refine、refine。它們之間有什麼區別?我不知道。當時的我也不知道(其實我一直有比較認真寫commit message,但那三個refine當時確實是懶了有點放棄治療的意思)。

三個 refine 並排站在那裏,像三扇一模一樣的門,後面是什麼只有打開才知道。而打開的方式是對每一個執行 git diff,逐行看代碼差異——對於一個 4000 多行的 HTML 文件來說,這基本等於大海撈針。

另一個困惑發生得更早。第一次運行 git status,終端輸出了一堆文件變更,其中有一個叫 .DS_Store 的文件顯示"被修改了"。我沒有改過任何叫這個名字的東西。我甚至不知道它是什麼。搜索之後才明白:這是 macOS 系統在你打開文件夾時自動生成的隱藏文件,記錄圖標排列方式之類的元數據。它和我的項目毫無關係,但 Git 在認真地跟蹤它的每一次變化。

圖片

這兩個困惑,一個關於"我寫了什麼 Git 不知道",一個關於"Git 跟蹤了什麼我不知道"。它們指向同一個問題:我在用 Git,但我不真正理解 Git 應該怎麼用。

2.7 GB 的 Git 倉庫

項目覆盤時我做了一次倉庫體檢,結果大震驚。

Git 倉庫體積:2.7 GB。跟蹤的文件總數:2517 個。其中真正需要跟蹤的源代碼文件——notebook、HTML、CSS、腳本——大約 78 個,佔 3%。剩下的 97%,是不該出現在 Git 裏的東西。

這 97% 都有誰?

排名第一的是 node_modules,2243 個文件,佔了總數的將近九成。這是我在項目後期為了導出 PDF 安裝的一個 Node.js 工具包,運行 npm install 之後自動下載的依賴文件。這些文件可以隨時通過一條命令重新生成,不需要版本管理。更關鍵的是,它們包含大量二進制文件——瀏覽器引擎、編譯後的代碼——Git 根本無法展示它們的變化內容。

排名第二的是 29 個原始 Excel 數據文件,從 202403.xlsx 到 202602.xlsx,每個幾 MB 到幾十 MB。作為原始數據源,它們幾乎不會被修改,即使修改了,Git 也只能告訴你"文件變了",看不到具體哪個單元格的數字從 54 變成了 55。

然後是 24 個導出的 PNG 截圖和 PDF 文件。這些都是腳本自動生成的產物,運行一次導出命令就能重新生成。

再就是前面提到的 .DS_Store。不止一個——項目裏每個文件夾都可能有一個。每次我在 Finder 裏隨便點開一個文件夾,它就會被"修改",然後出現在 git status 裏,製造噪音。

還有幾個 Excel 臨時文件,文件名以 ~$ 開頭——這是 Excel 打開文件時自動創建的鎖定文件,關閉 Excel 就會消失。它們甚至不是我的文件,是軟件的臨時產物。

圖片

為什麼這些東西會被 Git 跟蹤?原因簡單到讓人尷尬:項目一開始沒有 .gitignore

.gitignore 是一個放在項目根目錄下的純文本文件,作用只有一個——告訴 Git"哪些文件不要管"。它的寫法非常簡單:

# macOS 系統文件
.DS_Store

# Node.js 依賴
node_modules/

# 原始數據
data/raw_data_rednote/*.xlsx

# 導出產物
final-slides/exports/

就這麼幾行。每一行是一條規則,# 開頭的是註釋,* 是通配符,/ 結尾表示文件夾。把這個文件放在項目根目錄,Git 就會自動跳過匹配的文件,不跟蹤、不提交。

沒有 .gitignore 的後果很直接:倉庫臃腫到 2.7 GB,如果要克隆到另一台電腦需要下載全部內容;git status 每次都會列出大量無關文件的變更,真正有意義的代碼修改被淹沒在噪音裏;git add . 這種偷懶的全量添加命令會把所有不該進來的東西一起帶進來。

後來我在覆盤時補上了 .gitignore,效果立竿見影:Git 需要關注的文件從 2517 個降到了 173 個,減少了 93%。但遺憾的是,已經進入 Git 歷史的那些文件不會自動消失——它們永久留在了倉庫的歷史記錄裏,這就是為什麼 .git 文件夾依然有 2.7 GB。

教訓很清楚:.gitignore 不是項目做到一半才補的東西,它應該是 git init 之後創建的第一個文件。你甚至不需要自己寫——告訴 AI"我的項目用 Python + Node.js + macOS,幫我生成一個 .gitignore",十秒鐘就能得到一個覆蓋全面的版本。

同時維護兩套版本系統

項目覆盤時,我打開 slides 文件夾,看到了這樣一個文件列表:

Color-Overview-20260402.html
Color-Overview-20260402-v2.html
Color-Overview-20260402-v3.html
Color-Overview-20260402-v4.html
Color-Overview-20260402-v5.html
Color-Overview-20260403.html
Color-Overview-20260403-v1.html
archive/

archive 文件夾裏裝的是更早的版本。

我其實知道用Git做版本管理就可以了,但還是忍不住給文件創建副本,這種非Github時代的古法文件災備思路,懂的都懂。這個項目有 30 次 Git 提交,也就是說 Git 已經在幫我記錄每一次修改的歷史。而我同時又在用文件名後綴 -v2-v3-v4 來管理版本,有一種既要又要的分裂的美。

兩套版本系統。這帶來了三個問題。

第一,想找回之前某個版本的時候,agent不知道該看 Git 歷史還是找文件名。-v3 和 -v4 之間的差別記錄在 Git 裏嗎?還是隻是手動複製了一份改了個名字?答案是兩種情況都有,這就很混亂。

第二,每個版本都是一份完整拷貝。我的 HTML 文件有 4000 多行,每創建一個 -v2、-v3,就是 4000 多行的全量複製。而 Git 也在跟蹤這些拷貝的每一次變更,倉庫體積成倍增長。

第三,AI 也會被搞糊塗。當我在一個新的 AI 對話中說"基於最新版本修改",AI 需要先判斷哪個是最新的。20260403.html 和 20260403-v1.html 哪個更新?光看文件名無法確定。實際上我自己有時候也記不清。

正確的做法是隻維護一個文件,比如就叫 Color-Overview.html,所有版本歷史交給 Git 管理。想查看歷史?git log --oneline 列出所有提交記錄。想回到之前的版本?git checkout 加上對應的提交編號。想對比兩個版本的差異?git diff 精確到每一行代碼的變化。

如果擔心"改壞了回不去"——這恰好就是 Git 存在的意義。每一次提交都是一個完整的快照,任何時候都可以回到任何一個歷史版本。你甚至可以在大改之前創建一個分支:大膽實驗,效果好就合併回來,效果不好就扔掉分支,主線完全不受影響。

用文件名管版本是沒有 Git 之前的做法。一旦你開始用 Git,就應該徹底放棄 -v1-v2 這套命名方式。兩套系統並行不是雙重保險,是雙重混亂。(除非有一些新舊版本的比較需求。但這種需求可以創建branch)

圖片

三個 refine

回到開頭的那個場景。我的 Git 提交記錄中有這樣一段:

f7e60bd preoject retro & QAs
17132e7 revision
91c1b54 refine
b7b15b9 refine & email draft
e939d34 refine
6fc0a77 add cover/end
2cdb53e 精裝修,no cover page

三個 refine 和一個 revision,幾乎佔了這段記錄的一半。兩天之後我想"回到那個圖表顏色還沒改的版本",面對這些提交記錄完全無從下手。三個 refine 裏哪個改了圖表顏色?哪個改了文字?哪個調了間距?沒有任何線索。我只能一個一個 git diff 翻過去,在幾千行的差異中尋找和"圖表顏色"相關的那幾行改動。

提交說明(commit message)這件事,我一直知道它很重要,最好能寫清楚這次修改了什麼。但是人一懶起來真的是什麼都幹得出來,包括亂寫commit message. 像這次這種單人小項目還好,大項目這樣寫真的不行,完全是嫌自己日子太舒服,給回溯上難度,尤其在vibe coding的場景下。

第一,vibe coding 的迭代速度很快。AI 幫你寫代碼,一天可能產生 5 到 10 次提交。當提交密度這麼高的時候,每條記錄之間的差異變得很細微——也許只是調了一個間距、改了一個顏色、換了一段文字。如果提交說明都是 "refine",這些細微的差異就完全淹沒在了一個籠統的詞裏。

第二,新開的 AI 對話不知道之前發生了什麼。當我在一個新的會話中說"幫我看看最近幾次提交都改了什麼",AI 會去讀 git log。如果看到的是三個 "refine",它和我一樣無法判斷該回退到哪個版本、哪次提交引入了某個問題。提交說明是 AI 瞭解項目歷史的主要途徑之一,寫得含糊,AI 的幫助也會變得含糊。

好的提交說明不需要多複雜。對比一下:

# 之前
refine
refine
refine

# 之後
style(1.2): 統一 Color 為 Colorway 術語
content(summary): 添加頁面結論文字
fix(2.2): 修正男裝聚類名稱

後者多花了十幾秒,但三個月後你依然知道每次改了什麼。前綴 stylecontentfix 標記了修改類型,括號裏的 1.2summary2.2 標記了修改的頁面範圍,後面的中文描述是具體內容。不需要寫得很長,一句話概括就夠。

實際操作中,你甚至不需要自己想這句話。每次準備提交之前,對 AI 說一句"幫我看看這次改了什麼,寫一個提交說明",它會根據代碼差異自動生成一條清晰的信息。整個過程不到 30 秒。

有人可能會說:我的項目就自己一個人做,提交說明寫給誰看?答案是寫給未來的自己看。兩週後的你、兩個月後的你、下一個項目開始時回來找參考的你——他們都會感謝今天多花 30 秒寫了一句有信息量的話,而不是一個 "refine"。

給重要時刻貼書籤

我的項目有 30 次提交,0 個 tag。

Tag 是什麼?如果把 Git 倉庫比作一本正在寫的書,commit 就是每一次按下保存鍵——你寫了一段、改了一段、刪了一段,每次保存都產生一條記錄。30 次提交,就像這本書被保存了 30 次。

Tag 是在某一頁貼一個便利貼書籤。你在第 15 次保存時覺得"這個版本可以拿去給老闆看了",就在這個提交上貼一個標籤,叫 v0.5-first-review。書籤不會改變書的內容,它只是幫你快速翻到那一頁。

我的 30 次提交長這樣:

f7e60bd preoject retro & QAs
17132e7 revision
91c1b54 refine
b7b15b9 refine & email draft
e939d34 refine
6fc0a77 add cover/end
2cdb53e 精裝修,no cover page
57bf7eb 本地圖片嵌入
eb2b2a6 2.2 & 2.3 combined
06c49ed add data: secondary color cohort to excel

現在假設老闆問:"從你第一次拿給我看到最終版,中間改了多少東西?"我得在這 30 條記錄裏找出哪條對應"第一次評審版"、哪條對應"最終版"。面對三個 refine 和一個"精裝修",只能靠記憶——而記憶是最不可靠的版本管理工具。

如果當時打了 tag,情況完全不同。給 add cover/end 這條提交貼一個 v0.5-first-review,給最終版貼一個 v1.0-final,之後想對比兩個版本之間的差異,一條命令就夠:

git diff v0.5-first-review..v1.0-final

Git 會精確列出從評審版到最終版之間的所有代碼變化。不需要記住提交編號,不需要在 30 條記錄裏翻找,不需要猜"refine"是哪個 refine。

打 tag 的操作簡單到幾乎不值得單獨說明:

git tag v1.0-final

一行命令,一秒完成。如果想給過去的某個提交補打標籤,加上提交編號就行:

git tag v0.5-first-review 6fc0a77

什麼時候該打 tag?不需要每次提交都打——那就失去了"標記重點"的意義。對於我這個兩週半的項目,大概這些時刻值得標記:

時刻
Tag 命名
數據管線跑通
v0.1-data-pipeline
頁面佈局完成
v0.2-layout-done
第一次審計通過
v0.3-audit-pass
配圖集成完成
v0.4-images-done
提交評審版
v0.5-first-review
最終交付
v1.0-final

30 次提交,5 到 8 個 tag,足夠覆蓋所有關鍵節點。每個 tag 就像在一本 30 頁的書裏貼了幾個書籤——你不需要逐頁翻找,直接翻到書籤那頁就行。

在 vibe coding 的場景下,tag 還有一個額外的好處:當你在一個新的 AI 對話中說"幫我對比一下從上次評審到現在改了什麼",AI 可以直接執行 git diff v0.5-first-review..HEAD,精確拿到所有差異。不需要你記住哪個提交編號對應哪個版本,tag 名字本身就是最好的索引。

圖片

這篇文章講的四件事——.gitignore、不用文件名管版本、寫好提交說明、給關鍵節點打 tag——沒有一件是什麼高深技術。它們是 Git 使用者的基本功,是任何工程背景的人都會自然習得的常識。但我不是工程師,Git 對我來說是"聽說應該用"的工具,不是"知道怎麼用好"的工具。我知道 git add 和 git commit,夠用了——至少我以為夠用了,直到 2.7 GB 的倉庫告訴我,光會提交不代表會管理。

這些隱性知識不是 AI 會主動教你的。你說"幫我提交",AI 執行 git commit,但不會說"你是不是忘了寫 .gitignore"。你說"幫我保存這個版本",AI 幫你複製文件加 -v2 後綴,但不會說"你不該這麼做"。AI 回應你的指令,但不會糾正你的習慣。

給讀者的行動清單

  1. 1. 新項目的第一個文件是 .gitignore。在 git init 之後、寫任何代碼之前,先讓 AI 根據你的技術棧生成一個。Python 項目、Node.js 項目、數據分析項目,AI 都能給出覆蓋全面的模板。這件事只需要做一次,但能避免倉庫從第一天開始就積累垃圾。
  2. 2. 永遠不要用文件名後綴管理版本。如果你發現自己在創建 -v1-v2-v3,這恰好說明你需要的是 Git branch 或 tag,而不是文件拷貝。一個文件,一個名字,所有歷史交給 Git。
  3. 3. 讓 AI 幫你寫提交說明。每次準備提交之前,對 AI 說"幫我看看這次改了什麼,寫一個提交說明"。它會根據代碼差異生成一條具體、清晰的信息,比你自己想的更快,比 "refine" 有用得多。