什麼是 GitHub?給非工程師的版本控制入門
GitHub 是一個網站,用來存放軟體專案的程式碼以及完整歷程,讓你能看見每一次變更、復原錯誤,並與其他人共同開發同一個專案。它建立在 Git 之上,Git 是一套免費軟體,會隨時間記錄專案檔案的快照。Git 負責保存歷程;GitHub 則是線上的家,讓這份歷程能被分享、備份並討論。
如果你用 AI 製作 App,GitHub 主要有兩個用途:擁有一份屬於自己的程式碼副本(存放在你製作 App 的工具之外),以及把程式碼交給開發者,讓他們用熟悉的格式接手。
用 AI 製作 App 時為什麼重要
AI App 製作工具寫入和修改程式碼的速度很快,但並不是每次修改都會變得更好。版本控制能幫你安心地保有成果。
- 放心復原。 每次儲存的變更都是一份快照。如果 AI 把某個功能弄壞了,你可以回到上一個正常的版本。
- 程式碼歸你所有。 放在你自己 GitHub 帳號裡的程式碼,即使你換工具、停止付費,或想找第二個意見,也仍然是你的。
- 與開發者合作。 幾乎所有開發者每天都會使用 Git。儲存庫讓他們可以審閱 AI 寫的程式碼、修正問題,再把修改送回來。
- 部署到其他地方。 許多託管平台都能直接從 GitHub 儲存庫部署。
日常比喻:追蹤修訂加上共用雲端硬碟
把它想成一份開啟了「追蹤修訂」功能、並存放在共用雲端硬碟裡的文件。
- Git 就是追蹤修訂:每一次編輯都會被記錄,包括是誰、何時、為什麼修改,而且你可以還原到任何一個版本。
- GitHub 就是共用雲端硬碟:文件存放在線上,其他人可以取得副本,也有地方留言與核准。
- 分支(Branch) 就像另存一份名為「草稿——新的定價區塊」的副本,讓你可以實驗,而不影響大家依賴的版本。實驗成功後,再把它合併回去。
和一般文件的差別在於規模。一個 App 有數百個檔案,而 Git 會把它們一起追蹤,所以一份快照代表的是整個專案在那一刻的狀態。
你會遇到的 Git 與 GitHub 術語
| 術語 | 白話意思 |
|---|---|
| 儲存庫(Repository, repo) | 一個包含完整歷程的專案資料夾 |
| 提交(Commit) | 一次儲存的變更快照,附上一段簡短的說明訊息 |
| 分支(Branch) | 一條獨立的工作線,讓實驗不會干擾主要版本 |
| main | 主要分支的常用名稱,也就是正式上線的版本 |
| 合併(Merge) | 把某個分支的變更併入另一個分支 |
| 合併衝突(Merge conflict) | 兩處變更修改了同一行,需要有人決定保留哪一個 |
| 複製(Clone) | 下載一份完整的儲存庫副本,包含歷程 |
| 推送/拉取(Push / pull) | 把你的提交上傳到 GitHub/把別人的提交下載下來 |
| Pull request(PR) | GitHub 上的一個頁面,提議把某個分支合併進來,供大家審閱與討論 |
| Fork | 你在 GitHub 上對別人儲存庫建立的一份自己的副本 |
| Issue | 附屬於儲存庫的待辦事項或錯誤回報 |
.gitignore | 一份清單,列出 Git 永遠不該記錄的檔案,例如 .env 機密檔與下載的相依套件 |
| GitHub Actions | 在 GitHub 上執行的自動化流程,例如每次 Pull request 都跑一次測試 |
有兩點值得特別強調。第一,Git 的歷程在設計上是永久保存的:如果密碼被提交並推送,之後在新的提交中刪除它,並不會把它從歷程中移除。第二,提交的說明訊息決定了它的價值。「修正兩人同時預約時重複扣款的問題」對你之後有幫助;「更新」則沒有。
實際範例:把 AI 製作的 App 交給自由接案的開發者
你用 AI App 製作工具做了一個客戶入口網站。它能運作,但你希望一位自由接案的開發者幫忙加入一個與會計軟體串接的困難功能。
- 把專案連結到一個新的私人 GitHub 儲存庫並推送。 這個儲存庫現在包含程式碼與它的歷程。
- 檢查裡面的內容。 在 GitHub 上打開儲存庫,應該看不到
.env檔案,程式碼裡也不應該有 API 金鑰。機密應該留在平台的設定中,之後如果需要,再另外與接案者分享,請參閱 環境變數與機密。 - 邀請接案者 只作為這個儲存庫的協作者加入。
- 他們在一個分支上工作,名稱可能是
accounting-sync之類,邊做邊提交,完成後開啟一個 Pull request。 - 你審閱這個 Pull request。 即使不會讀程式碼,你也可以閱讀說明、查看哪些檔案被修改,並在留言中提問。
- 滿意後合併,再把變更拉取回你的製作工具,讓你和 AI 從新版本繼續開發。
整個過程中,你都能清楚看到哪些地方被改了,必要時也能復原。這就是版本控制在一個工作流程中的全部價值。如果你還在考慮是否要找開發者,請參閱 找開發者或用 AI 製作。
常見錯誤與迷思
- 「GitHub 和 Git 是同一樣東西。」 Git 不需要 GitHub 也能運作;GitLab 和 Bitbucket 等替代方案同樣能代管 Git 儲存庫。
- 「GitHub 會替我運行 App。」 GitHub 只負責儲存程式碼。要讓大眾使用你的 App,需要的是網站託管,那是另一項服務(不過有些主機可以直接從 GitHub 部署)。
- 提交機密資料。 這是最具破壞性、也最常見的錯誤。請用
.gitignore排除.env檔案,並且替任何曾被推送出去的金鑰換新。 - 只有一個分支,也不寫訊息。 單人做實驗時還可以接受,但請為每次提交寫清楚的說明,並對有風險的修改使用分支。
- 同時在兩個地方編輯。 如果你在 GitHub 和 AI 製作工具中都修改程式碼,且中間沒有拉取同步,就會產生衝突。請一次只在一個地方編輯,切換前先同步。
- 以為私人儲存庫就是所有東西的備份。 它只保存程式碼,不包含你的資料庫內容或上傳的檔案,這些需要另外備份。
可以向 AI 製作工具提出的要求
- 「新增一個
.gitignore,排除.env、相依套件資料夾與建置輸出。」 - 「撰寫一份 README,說明如何安裝、需要哪些環境變數(只列名稱),以及如何執行 App。」
- 「新增一個
.env.example,列出所有變數名稱,但不含真實的值。」 - 「每次變更都使用清楚、具描述性的提交訊息。」
這四個要求能讓開發者在幾分鐘內就接手這個儲存庫。若要把 App 搬到你自己的伺服器,請參閱如何匯出並自行架設 AI 製作的 App;若要在面對真實使用者前強化安全性,請參閱如何把 AI 原型推向正式上線。
GitHub 與 Mythex
Mythex 在每個方案中都會替你保存歷程:每次 Agent 成功完成一輪後,它會儲存一個檢查點,也就是可以還原的 Git 快照。在 Pro 方案中,你可以連結 GitHub,把專案推送到或拉取自你自己的儲存庫,也可以下載整個專案的壓縮檔;匯出時會排除機密與已安裝的相依套件。這裡的 GitHub 用於同步程式碼,而不是用來登入 Mythex。詳情請參閱文件中的 GitHub、匯出與匯入,各方案包含的內容請參閱定價頁面。
常見問題
Git 和 GitHub 有什麼差別?
Git 是一套免費軟體,能在任何電腦上記錄專案檔案的歷程。GitHub 則是由微軟擁有的網站,用來線上代管 Git 儲存庫,並提供 Pull Request、Issue 與自動化等協作工具。
我用 AI 做 App 一定要用 GitHub 嗎?
不一定。許多 AI App 製作工具會在產品內替你保存歷程。當你想擁有自己的程式碼備份、需要與開發者合作,或打算把 App 放到其他地方託管時,GitHub 才會變得有用。
GitHub 免費嗎?
GitHub 有免費方案,包含公開與私人儲存庫,對大多數個人和小團隊來說已經足夠。付費方案則增加團隊管理與其他功能;目前的詳細內容請參閱 GitHub 的定價頁面。
我的程式碼在 GitHub 上會公開嗎?
只有在你把儲存庫設為公開時才會。私人儲存庫只有你和你邀請的人看得到。即使是私人儲存庫,也絕對不要提交密碼或 API 金鑰。