什麼係 GitHub?畀非開發者睇嘅版本控制入門
GitHub 係一個網站,用嚟儲存軟件項目嘅程式碼同完整歷史,等你睇到每一次改動、還原錯誤,並且同其他人一齊做同一個項目。佢建基於 Git 之上,Git 係免費軟件,會隨時間記錄項目檔案嘅快照。Git 負責保存歷史;GitHub 就係將呢段歷史分享、備份同討論嘅網上平台。
如果你用 AI 寫 app,GitHub 主要有兩個用途:擁有一份程式碼副本,放喺你用嚟生成佢嘅工具之外;同埋用開發者已經熟悉嘅格式交俾佢哋。
用 AI 寫嘢時點解重要
AI app builder 寫同改程式碼嘅速度好快,但唔係每次改動都會令嘢更好。版本控制就係保障呢層安全網。
- 有信心咁還原。 每次儲存嘅改動都係一個快照。如果 AI 弄壞咗嘢,你可以返去最後一個正常嘅版本。
- 擁有權。 放喺你自己 GitHub 帳戶入面嘅程式碼,即使你轉用其他工具、停止付費,或者想搵第二個意見,都仍然屬於你。
- 同開發者合作。 幾乎所有開發者每日都用 Git。倉庫可以俾佢哋檢視 AI 寫咗啲咩、修正,然後將改動送返過嚟。
- 部署去其他地方。 好多託管平台可以直接由 GitHub 倉庫部署。
日常比喻:追蹤改動加共用雲端硬碟
想像一份開咗「追蹤改動」嘅文件,放喺共用雲端硬碟度。
- Git 就係追蹤改動:每次編輯都會記錄低,連邊個改、幾時改、點解改都有,你可以返去任何一個版本。
- GitHub 就係共用雲端硬碟:文件放喺網上,其他人可以攞一份副本,亦有位置留言同批核。
- 分支(branch) 好似儲存一份叫「草稿——新價錢部分」嘅副本,等你試嘢之時唔會掂到大家都依賴嘅版本。如果試成功,就將佢合併返去。
同文件嘅分別在於規模。一個 app 有成百個檔案,Git 會一齊追蹤所有檔案,所以一個快照就係整個項目喺嗰一刻嘅狀態。
你會遇到嘅 Git 同 GitHub 術語
| 術語 | 白話解釋 |
|---|---|
| Repository(repo) | 一個附有完整歷史嘅項目資料夾 |
| Commit | 一個已儲存嘅改動快照,附有簡短訊息講明改咗咩 |
| Branch | 一條獨立嘅工作線,等實驗唔會影響主版本 |
| main | 主分支嘅常用名稱——即係正式上線嗰個版本 |
| Merge | 將一條分支嘅改動合併去另一條分支 |
| Merge conflict | 兩個改動都改咗同一行,要有人揀保留邊個 |
| Clone | 下載一份完整嘅倉庫副本,連歷史都有 |
| Push / pull | 將你嘅 commit 推上 GitHub / 將其他人嘅 commit 拉落嚟 |
| Pull request(PR) | GitHub 上面一個提議合併分支嘅頁面,俾人審閱同討論改動 |
| Fork | 你喺 GitHub 上面擁有嘅別人倉庫嘅自己副本 |
| Issue | 附喺倉庫度嘅 GitHub 待辦事項或者 bug 報告 |
.gitignore | 一張列表,寫明 Git 永遠唔應該記錄嘅檔案,例如 .env 秘密資料同下載落嚟嘅依賴項 |
| GitHub Actions | 喺 GitHub 上面運行嘅自動化,例如每個 pull request 都跑測試 |
有兩點值得特別強調。第一,Git 歷史按設計係永久嘅:如果一個密碼被 commit 並且推咗上去,之後喺另一個 commit 刪走佢,都唔會將佢由歷史入面移走。第二,commit 嘅價值全靠訊息寫得好唔好。「修正兩人同時預訂時嘅重複計數」之後睇得明;「update」就唔得。
實例:將 AI 寫嘅 app 交俾自由工作者
你用 AI app builder 整咗一個客戶入口網站。佢運作正常,但你想搵一位自由工作者開發者,加一個難度較高嘅功能,同你嘅會計軟件對接。
- 將項目連去一個新嘅私人 GitHub 倉庫,然後 push。 倉庫而家有程式碼同佢嘅歷史。
- 睇吓裡面有咩。 喺 GitHub 打開倉庫,應該見唔到
.env檔案,程式碼入面都唔應該有 API key。秘密資料應該留喺你個平台嘅設定度,如果要分享,就另外俾自由工作者——詳見環境變數同秘密資料。 - 邀請自由工作者 做呢個倉庫嘅協作者,只限呢一個倉庫。
- 佢哋喺一條叫類似
accounting-sync嘅分支度工作,邊做邊 commit,完成後開一個 pull request。 - 你審閱 pull request。 就算唔睇程式碼,你都可以睇描述、檢查邊啲檔案有改動,並且喺留言度提問。
- 滿意之後 merge,然後將改動 pull 返去你嘅 builder,等你同 AI 可以由新版本繼續。
過程中,你可以睇清楚改咗咩,有需要亦可以還原。呢個工作流程就係版本控制嘅全部價值。如果你仲未決定要唔要搵開發者,可以睇吓搵開發者定係用 AI 自己做。
常見錯誤同誤解
- 「GitHub 同 Git 係同一樣嘢。」 Git 唔使 GitHub 都可以用;GitLab、Bitbucket 等其他服務都會託管 Git 倉庫。
- 「GitHub 會運行我嘅 app。」 GitHub 只係儲存程式碼。要俾公眾使用,就需要網頁託管,呢個係另一項服務(不過有啲託管商可以由 GitHub 部署)。
- Commit 咗秘密資料。 呢個係最有破壞力、亦最常見嘅錯誤。用
.gitignore排除.env檔案;如果任何 key 曾經被 push 上去,就要即刻更換。 - 只得一條分支,又冇寫訊息。 自己一個人做實驗就冇問題,但每次 commit 都要有清楚嘅訊息,有風險嘅嘢就用分支。
- 兩邊同時改。 如果你喺 GitHub 同 AI builder 度都改程式碼,中間冇 pull,就會整出衝突。每次只揀一個地方編輯,轉換之前先同步。
- 以為私人倉庫就係所有嘢嘅備份。 倉庫只儲存程式碼,唔係你數據庫嘅內容或者上載嘅檔案。呢啲都要另外備份。
你可以叫 AI builder 做咩
- 「加一個
.gitignore,排除.env、依賴項資料夾同 build 輸出。」 - 「寫一個 README,講清楚點樣安裝、需要邊啲環境變數(只要名稱),以及點樣運行 app。」
- 「加一個
.env.example,列出所有變數名稱,但唔要真正嘅值。」 - 「每次改動都用清楚、有描述性嘅 commit 訊息。」
呢四個要求會令開發者幾分鐘內就可以接手個倉庫。如果想將 app 搬去你自己嘅伺服器,可以睇如何匯出並自行託管 AI 寫嘅 app;如果要喺真正用戶使用前加固,就睇將 AI 原型推去生產環境。
GitHub 同 Mythex
Mythex 每個計劃都會幫你保留歷史:每次 agent 成功完成一輪之後,都會儲存一個 checkpoint,即係一個 Git 快照,你可以返去嗰度。喺 Pro 計劃,你可以連接 GitHub,對住你自己嘅倉庫 push 或 pull 項目,或者將整個項目下載成壓縮檔;秘密資料同已安裝嘅依賴項唔會被匯出。呢度嘅 GitHub 係用嚟同步程式碼,唔係用嚟登入 Mythex。詳見文件入面嘅 GitHub、匯出同匯入,以及定價頁了解每個計劃包括咩。
常見問題
Git 同 GitHub 有咩分別?
Git 係免費軟件,可以喺任何電腦度記錄一個項目檔案嘅歷史。GitHub 係一個由 Microsoft 擁有嘅網站,喺網上託管 Git 倉庫,並加咗 pull request、issue 同自動化等協作工具。
用 AI 寫 app 一定要用 GitHub 嗎?
唔一定。好多 AI app builder 喺產品入面已經幫你保留歷史。當你想擁有程式碼嘅副本、想同開發者合作,或者打算將 app 放去其他地方託管,GitHub 就會開始有用。
GitHub 係咪免費?
GitHub 有免費計劃,包括公開同私人倉庫,對大部分個人同小團隊都夠用。付費計劃會加入團隊管理同其他功能;最新價錢請睇 GitHub 嘅定價頁。
我喺 GitHub 嘅程式碼會唔會公開?
只有你將倉庫設為公開先會公開。私人倉庫只得你同你邀請嘅人睇到。就算係私人倉庫,都唔好 commit 密碼或者 API key。