現代程式開發流程優化
本文檔旨在優化 VS Code、GitHub、Hugging Face Spaces 及本地 Docker/GitLab 之間的互動流程,以提升開發、部署與備份的效率。
核心優化理念
- 單一事實來源 (Single Source of Truth): 所有正式程式碼以 GitHub 為中心,Hugging Face Spaces 等平台僅作為部署或測試目標。
- 分支策略 (Branching Strategy): 開發新功能或修復錯誤時建立獨立分支 (如
feature/add-new-model
),確保main
主分支隨時穩定。 - 遠端命名 (Remote Naming): 為不同遠端倉庫使用清晰名稱,例如
origin
代表 GitHub,hf
代表 Hugging Face。
優化流程 (GitHub + Hugging Face)
第零步:初始設定 (只需做一次)
- 從 GitHub Clone: 將專案的「主要」Repo 從 GitHub Clone 到本地。
git clone https://github.com/YOUR_USERNAME/YOUR_REPO.git cd YOUR_REPO
- 新增 Hugging Face Remote: 將 Hugging Face Spaces Repo 添加為新的遠端目標,命名為
hf
。# 在你的 Hugging Face Space Repo 頁面可以找到這個 URL git remote add hf https://huggingface.co/spaces/YOUR_HF_USERNAME/YOUR_SPACE_NAME
第一步:日常開發循環
- 建立開發分支: 從最新的
main
分支建立一個新的feature
分支。git checkout main git pull origin main git checkout -b new-feature-branch
- 本地修改與提交: 在 VS Code 中修改程式碼,並進行 commit。
git add . git commit -m "feat: 實作新功能"
- 推送到 Hugging Face 進行測試: 將您的開發分支推送到 Hugging Face Spaces 的
main
分支來觸發更新。# 語法: git push <遠端名稱> <本地分支>:<遠端分支> git push hf new-feature-branch:main
注意:此操作僅更新 Hugging Face 遠端的main
分支,不會影響您 GitHub 上的main
分支。 - 線上確認: 在 Hugging Face Spaces 上觀察程式是否如預期般運作。
- 合併到主分支並推送到 GitHub: 確認測試無誤後,將開發成果正式合併回 GitHub 的
main
分支。git checkout main git merge new-feature-branch git push origin main
優化流程 (本地 Docker + GitLab)
- 遠端連線: 推薦使用 VS Code 的 Remote - SSH 或 Remote - Containers 擴充套件,以獲得無縫的開發體驗。
- 本地 Docker 測試: 在開發分支上修改程式碼 (包括
Dockerfile
),並在遠端主機的終端機執行docker build
和docker run
進行測試。 - 確認後推送到 GitLab:
當本地 Docker 環境確認無誤後,將變更 commit,然後推送到 GitLab。最佳實踐是發起一個 Merge Request (MR) 進行審查。
# 將開發分支推送到 GitLab git push gitlab new-feature-branch # (或者,簡化流程) 合併後直接推送 main 分支 git checkout main git merge new-feature-branch git push gitlab main
流程總結比較
項目 | 原始流程 | 建議的優化流程 |
---|---|---|
程式碼來源 | 從 Hugging Face Clone | 從 GitHub Clone |
開發方式 | 直接在主分支修改 | 使用 feature 開發分支 |
測試部署 | push 到 Hugging Face 測試 |
將 feature 分支 push 到 HF 的 main 測試 |
最終備份 | 確認後再 push 到 GitHub |
測試通過後,將 feature 分支合併回 main 並 push 到 GitHub |
Git 歷史 | main 分支可能包含測試中的提交 |
main 分支歷史乾淨,只包含已完成的功能 |
留言
張貼留言