Juxt
JUXT Design
文章 · 收錄於 2026.08
MGN-BLOG-GIT-FOR-
索引 · 部落格

給設計師的 Git for Dummies

你不用會 rebase。但如果你開始用 AI 寫 coded prototype,這幾件事不懂,協作會很痛。

3 分鐘閱讀

前幾天在 Threads 隨口寫了一句:凡採用 AI 工作流程的 UI/UX 設計師(或非工程人員),都該先從 Git 學起,否則會很難跟人協作。

底下很快出現兩種聲音。一種是「開一堂給設計師的 Git 101 啊」,另一種是「套 skill 就好,學什麼學」。還有人問得更直接:設計師出的圖檔,本來就不能 git commit 吧?每個版本都是獨立檔案,也沒有「很多人共同畫一份 pages」這種事。

這篇主要想分享給開始用 AI 碰程式、但又還沒把 Git 當成自己工具的人。不是要你變成工程師,也不是叫你把 Figma 檔丟進 GitHub。只是我自己越來越覺得:當你真的能開 branch、交 coded prototype,有幾個詞不懂,跟工程師講話會卡住,叫 AI 救場也會救錯地方。

Claude Code 幫你生出一頁 HTML,那還只是你自己的草稿。要讓別人打開、留言、一起改,靠的不是 Claude 的預覽視窗,是 GitHub 存檔、Vercel 發網址。

▍為什麼是現在,不是三年前?

設計系統放在 Git 裡,一點都不新鮮。Tokens、component、icon font,工程那邊本來就在管版本。只是 AI 出現以前,那通常不是設計師的責任。

多數人還是在 Figma 交付。Git 就算存在,也是別人的工具。你改完畫面、標好 spec、丟連結,工作就結束了。

現在不一樣的是門檻。AI 把「動手寫一點前端」變成設計師做得到的事:開一個 branch,做一個 coded prototype,自己改 padding、自己修對齊、自己把 component 補進真實介面。這很好。但老實說,也很快就會碰到工程師每天在處理的東西——conflict、branch、PR 太大、想改回上一版卻改爛。

❖ Git 從前是工程的基礎設施。AI 把設計師也推進這套基礎設施裡,只是多數人還沒拿到地圖。

所以重點不是「設計師要不要學寫 code」。是:你已經在碰 code 了,協作語言卻還停在 Figma 的 Version History。

▍先講清楚:不是叫你把圖檔丟進 Git

這大概是最容易誤會的地方,所以我想放最前面。

Git 預設是為純文字設計的。一段 CSS 改一行,它只記住那一行的差。一張 PNG 改一個 pixel,它會把整張圖再存一次。Figma 的 .fig、PSD、影片、大圖匯出,都是這種 binary。能塞進去,但 repo 會胖到爆,之後誰 clone 都會恨你。

適合進 Git 的,通常是 component 原始碼、tokens、CSS / JSON、SVG、文件、coded prototype。不該進的,是匯出圖、.fig、影片、node_modules,還有一堆「最終最終_v3_最終.png」。

設計師本來就很少「很多人同時畫同一份 pages」。Git 要管的,也不是那件事。它管的是同一份文字檔被不同人、在不同時間改過,怎麼不互相覆蓋,怎麼回到某個確定存在過的狀態。

Figma 繼續管畫面。Git 管進到產品裡的那一層。兩套工具,兩種工作。

▍用 Figma 的語言講一次 Git

你不需要先懂指令。我自己是把這幾個詞,對回已經會的東西。

Repo(repository) 就是整份專案。有點像一個 Figma file,只是它活在資料夾裡,不只活在瀏覽器。

Commit 是一次有名字的存檔。Figma 的 Version History 會自己幫你存;Git 要你主動按,而且最好寫一句人話,說明為什麼存。updatefix button 對之後的自己一點用都沒有。「把送出按鈕改成主色,避免在表單裡看起來像次要動作」,才像一則 commit。

Branch 比較像 Duplicate this page 來試。複製一份出來改,改壞了不影響大家認的那份。主幹通常叫 main。你的實驗、你的一顆按鈕、你的一頁 prototype,都該活在自己的 branch 上,而不是直接在 Production 檔裡揮毫。

Pull Request(PR) 是申請把你的那份合回主幹,讓人 review。工程師看的不是你的感覺,是 diff:這次到底改了哪些行。PR 不是交作業,是把改動變得可以被討論。

Conflict 則有點像兩個人同時改同一組 auto-layout。Git 不知道該聽誰的,誰覆蓋誰都不對。這時候要人來選,不是再喊一聲「幫我修一下」就結束。

另外兩個很容易混:Push 是把你電腦上的存檔上傳,Pull 是把別人已經上傳的改動下載回來。你在本地改得再漂亮,沒 push,別人看不到。你沒 pull,就可能在一份過期的檔上繼續改,最後撞上 conflict。

再來三個,之後看 GitHub 會一直撞到。

Tag 是幫某個 commit 取一個不會跑掉的名字,像 v1.2.0。Figma 的 Version History 會一直往下長;tag 比較像你親手 pin 住「這就是當時上線的那一版」。之後要對回那一版,靠的是這個名字,不是「大概上週四那個」。

Release 是把 tag 包成給人看的版本。GitHub 會在那個 tag 上面加說明、截圖、下載檔。Tag 是給 Git 認的錨點;release 是給同事、stakeholder 看的 changelog。不是每次 commit 都要 release。通常是真的要交給別人用了,才打一個。

Fork 是把別人的 repo 複製成你帳號下的一份。有點像 Duplicate 社群裡的 Figma file 到自己 drafts:原檔還在,你在自己那份改。改完若想貢獻回去,再從你的 fork 開 PR 到原作者的 repo。Fork 不是 branch。Branch 還在同一份專案裡;fork 是你擁有的另一份副本。

❖ 你不用會打這些指令。但你要認得這些詞出現時,房間裡正在發生什麼事。

▍幾件我覺得值得養成的習慣

我不是要你背 Git 教科書。只是這幾件事,之後幾乎每天都會用到。

第一,不要在 main 上直接動手。主幹是大家認的那份。開一條 branch,一個意圖,一個 PR。

第二,commit 訊息用 Conventional Commits。前面一個短的 type,後面才是人話。常見大概這幾個就夠用:

  • feat: 新功能、新畫面、新狀態
  • fix: 修 bug,或修一個看起來不對的細節
  • docs: 只改說明
  • style: 只改看起來的東西,行為沒變
  • chore: 雜務,例如整理檔案、更新依賴

所以不要寫 update,比較像:

feat: 幫主按鈕加上 hover 狀態

fix: 修正表單送出後按鈕變成次要色

style: 把卡片間距從 12 調成 16

為什麼要加前綴?因為之後 changelog、release notes、工程師掃歷史,都靠這個分類。你現在多打四個字母,之後自己找「上次那個按鈕到底哪次改壞的」會快很多。

第三,送出前自己看 diff。圖檔、.fig、影片、node_modules、金鑰,都不要進 repo。AI 很愛 git add .,最後一眼得是你的。

第四,要回上一版,用 Git 的歷史,不要靠 prompt 回憶。真的要對外說「這是一版」,再打 tag;需要給人看說明時,才做 release。

▍「叫 AI 用 Git」不夠

有人說:不會 Git 也行,但要知道叫 AI 用 Git。這句對了一半。

叫 AI commitpush、開 PR,確實比自己背指令快。Skill 也能把流程包起來。可是 Skill 不是萬能,我們還是要懂得判斷。而且只是學一點點,就毋須每次都為了 git status 浪費 token。

更實際的問題是:AI 很會做動作,不一定知道動作對不對。

我看過最常見的災難,大概是這幾種。

第一,把「改回上一版」交給 prompt 去回憶。模型沒有你昨天檔案的記憶,它只是在猜上一版可能長什麼樣子。Git 的上一版不是回憶,是一份真的存在過的快照。要回去,用 Git;不要讓模型扮演時光機。

第二,PR 一次做太大。AI 很會把「改一個對齊」變成「順便重構旁邊三個 component」。送出前那種猶豫很真實:是不是該重做?工程師問的時候,我答得出來嗎?解法通常不是更會寫 prompt,而是把改動切小。一個 PR 做一件事。你自己都講不清楚的 diff,別人也不可能 review。

第三,看都不看就 commit。AI 幫你 git add . 的時候,可能連不該進版控的圖、環境檔、實驗代碼一起塞進去。git status 不是工程儀式,是你的最後一眼。

第四,一直待在 main 上改。直接在主幹上試 AI 的靈感,等於在 Production Figma 檔裡做探索稿。開 branch 只要十秒,之後省下來的,可能是整晚把檔救回來的時間。

我現在大概是這樣跑:先確認自己站在最新的主幹上,為這次改動開一條新 branch,改完自己看 diff,用 conventional commit 寫給三個月後的自己,再 push、開 PR。有 conflict 就停下來,問人,或讓 AI 解釋兩邊差在哪,再決定留哪一邊。不要讓它直接「全部接受」。

指令可以問 AI。你要保留的是判斷,不是記憶快捷鍵。

▍GitHub 是倉庫,Vercel 是店面

這兩個最常被混在一起,尤其是 Claude Code、Cursor、Codespaces 都開始能直接幫你生網頁之後。

GitHub 管的是原始檔和歷史。誰改了什麼、哪一條 branch、哪一個 PR、哪個 tag,都住在這裡。它比較像圖書館加共用硬碟:檔案可以很久,但打開 GitHub 網址,你看到的通常是 code,不是給客人看的網站。

GitHub Codespaces(以及 Claude Code、Cursor Cloud 那類雲端工作區)管的是一台暫時的電腦。它會把 repo 拉進來讓你改、讓 AI 改、讓你在裡面按預覽。這是工作桌,不是上線。Codespace 一停、一過期、一關掉,那張桌子就收起來了。沒 push 回 GitHub 的東西,別人拿不到;就算還在,那也不是一個你可以丟進 Slack 的公開網址。

Vercel 管的是部署。它去讀 GitHub 上的 repo,把 HTML / 前端專案建成一個真正能打開的網址。main 通常對應正式站;每一條 PR 會再生一個 Preview URL。這個網址才是給 PM、工程、客戶看的。他們不用裝 Claude,也不用進你的 Codespace。

所以不是「GitHub 比較高級、Vercel 比較漂亮」。一個負責記得,一個負責給人看。

❖ 存檔在 GitHub。預覽和上線在 Vercel。Codespace 只是你此刻坐的那張桌子。

Claude Code 生出一頁 HTML,預設常常只活在 Claude 自己的預覽裡。那很好用,可是協作會停在這裡:連結會過期、對方沒有 Claude 帳號就進不去、也沒有 diff 可以討論。

要讓它在 Claude 外面被看到、被一起改,路徑其實很短:

  1. 把 HTML 存進一個 Git repo,不要只留在對話裡。
  2. Push 到 GitHub。這一步才算真正存檔,別人才 clone / 開 PR 得了。
  3. 用同一個 GitHub repo 接 Vercel。之後每次 push、每個 PR,Vercel 會給一個 Preview URL。
  4. 把那個 Preview URL 丟進 Slack 或 PR 留言。對方打開的是網站,不是你的 Claude 視窗。

一個 index.html 也夠。不必先變成完整 Next.js 產品。Vercel 可以只是把靜態頁面掛上網。GitHub 負責「這份檔案現在長這樣、誰改過」;Vercel 負責「點開就能看」。Claude 的 hosting 兩邊都不是。

▍什麼時候你其實還在用 Figma 就好

不是所有設計工作都該進 Git。硬把流程塞進去,只會讓人討厭工具。

還在探索、還在對齊視覺、還在跟非工程的人討論方向,Figma 仍然比較快。Git 開始有價值,通常是這幾件事發生了:你改的是已經在產品裡的 component,不是一張新的探索稿;你交的是可以跑的 prototype,不是一組畫面;你跟工程師在改同一份真實介面;你需要一個能回得去的版本,而不是「我記得昨天好像比較好看」。

❖ 還在畫的時候用 Figma。開始進產品、開始跟人的 code 重疊,才需要 Git。

❖ 【小結】

我不是主張每個設計師去考 Git 證照,也不是說圖檔都該版本控制。我只是覺得,AI 把「設計師能碰程式」這件事提前了,而協作的摩擦不會因為你用自然語言下指令就消失。

Conflict 還是 conflict。PR 太大還是太大。上一版如果只存在於你的 prompt 裡,它就不算上一版。Claude 裡看得到,也不等於團隊看得到。

先搞懂 repo、commit、branch、PR、conflict,再加上 tag、release、fork。Commit 用 conventional 的前綴。檔案放 GitHub,預覽走 Vercel。Rebase、cherry-pick,之後再說。

❖ 【Asset】設計師的 Git 最小清單

  • [ ] 改東西前,先確認自己不在別人的 main 上直接動手
  • [ ] 一條 branch、一個意圖、一個 PR
  • [ ] Commit 用 conventional 前綴:feat: / fix: / docs: / style: / chore:,後面寫人話,不寫 update
  • [ ] 送出前看過 diff,知道這次改了什麼、沒改什麼
  • [ ] 圖檔、.fig、影片不要進 repo
  • [ ] 要回到上一版,用 Git 的歷史,不要靠 prompt 回憶
  • [ ] 真的要對外給一版,才打 tag;需要給人看說明,才做 release
  • [ ] 改別人的開源專案用 fork;同一份專案裡的實驗用 branch
  • [ ] 叫 AI 跑 Git 可以,但 status 和 diff 你要自己看一眼
  • [ ] Conflict 時先看懂兩邊,再決定;不要讓模型「全部接受」
  • [ ] Claude / Codespace 裡的預覽只是工作桌;要給人看,push 到 GitHub,再用 Vercel Preview URL

來源:Threads 討論,2026 年 8 月。

索引 · 相關文章

延伸閱讀

Figma

用 Cursor 一句話跑 Figma Weave 工具

Figma 8 月 11 日在 Release Notes 裡寫了一則更新,標題很直接: Starting today, you can run your Figma Weave tools from clients like ChatGPT, Claude, or Cursor using the Figma MCP server. Describe what you need and the agent finds the tool, runs it, and returns the result in your conversation. 這篇主要想分享給:已經在用 Cursor(或 Claude)做事,手上又有重複生成需求——mockup、icon、社群尺寸延展——的人。不是再介紹一次 Weave,而是把「這能力是什麼、怎麼接、現在值得先做什麼」寫清楚。 ⸻ ▍官方在講什麼 公告列

FigmaWeaveMcp
Ai

當 AI 不再等你開口

多數 AI 產品長得差不多:左邊一串 chat history,中間一個空白輸入框,右邊偶爾冒出一點 side panel。 你問一句,它答一句。關掉分頁,這段關係就結束了。明天再開,通常又是一次新的開始。 SpaceXAI 最近的 Designing Grok Bot for a world of persistent agents,講的卻是另一種關係:agent 不該只活在一次 session 裡。它要有名字、有記憶、有自己的電腦,甚至能在你還沒開口之前就開始做事。 讀完之後,我覺得這篇比較不像產品發表,而像一份設計宣言——當模型真的開始「負責」一件事,介面該怎麼跟著改。 ⸻ ▍聊天紀錄本來就該被忘掉 文章一開始就戳破一件很平常、但很少被當設計問題處理的事: Chats are disposable. 我們開一段對話,解決一個問題,它就被往下推。一週後再開一段。真正會回頭看的,大概只剩

AiDesignProduct Design