工具 5 分鐘閱讀
Git 團隊協作工作流:從混亂到有序
前言
一個人寫程式時 Git 怎麼用都行,但團隊協作就不一樣了。沒有規範的 Git 使用方式,很容易搞出一堆衝突和混亂。這篇文章分享適合中小型團隊的 Git 工作流程。
分支策略:GitHub Flow
對大多數接案專案來說,我推薦 GitHub Flow,它比 Git Flow 簡單很多:
核心原則
main分支永遠是可部署的狀態- 要開發新功能,從
main建立新分支 - 在分支上開發,定期推送
- 準備好了就發 Pull Request
- 通過 Review 後合併回
main - 合併後立即部署
分支命名規範
# 功能開發
feature/user-authentication
feature/shopping-cart
# 修復 bug
fix/login-redirect-error
fix/cart-calculation
# 優化改善
improve/query-performance
improve/responsive-layout
# 緊急修復
hotfix/payment-failure
提交訊息規範
Conventional Commits
# 格式
<type>(<scope>): <subject>
# 範例
feat(auth): 新增 Google 登入功能
fix(cart): 修正折扣計算錯誤
docs(readme): 更新安裝說明
style(button): 調整按鈕圓角大小
refactor(api): 重構訂單 API 回應格式
test(user): 新增使用者註冊測試
chore(deps): 更新 Laravel 至 11.x
常用的 type
| Type | 說明 |
|---|---|
| feat | 新功能 |
| fix | 修復 bug |
| docs | 文件更新 |
| style | 樣式調整(不影響邏輯) |
| refactor | 重構(不新增功能也不修 bug) |
| test | 測試相關 |
| chore | 建置或工具相關 |
實際工作流程
第一步:建立分支
# 確保 main 是最新的
git checkout main
git pull origin main
# 建立功能分支
git checkout -b feature/user-profile
第二步:開發與提交
# 小步提交,每個提交只做一件事
git add src/components/UserProfile.tsx
git commit -m "feat(profile): 新增使用者個人資料頁面"
git add src/api/user.ts
git commit -m "feat(profile): 新增更新個人資料 API"
git add src/components/AvatarUpload.tsx
git commit -m "feat(profile): 新增大頭照上傳功能"
第三步:推送與發 PR
git push origin feature/user-profile
然後到 GitHub 上發 Pull Request,寫好描述:
## 變更說明
新增使用者個人資料頁面,包含:
- 個人資料編輯表單
- 大頭照上傳功能
- 密碼變更功能
## 測試方式
1. 登入後點選「個人資料」
2. 修改姓名並儲存,確認更新成功
3. 上傳大頭照,確認圖片正確顯示
## 截圖
(附上頁面截圖)
第四步:Code Review
Review 重點:
- 程式碼邏輯是否正確
- 命名是否清楚易懂
- 有沒有潛在的效能問題
- 安全性考量
- 是否有足夠的錯誤處理
Review 的態度也很重要:提出建議而不是批評,肯定好的地方。
第五步:合併
Review 通過後,使用 Squash and Merge 合併:
# Squash merge 會把分支上的所有提交合併成一個
# 讓 main 的提交歷史更乾淨
處理衝突
預防勝於治療
- 功能分支不要活太久(最好不超過一週)
- 定期從 main 合併最新的程式碼
git checkout feature/my-feature
git merge main
# 或使用 rebase
git rebase main
發生衝突時
# 先拉最新的 main
git checkout main
git pull origin main
# 回到功能分支
git checkout feature/my-feature
git merge main
# 手動解決衝突後
git add .
git commit -m "merge: 解決與 main 的衝突"
有用的 Git 指令
# 查看漂亮的 log
git log --oneline --graph --all
# 暫存目前的修改
git stash
git stash pop
# 修改最後一次提交
git commit --amend
# 互動式 rebase(整理提交歷史)
git rebase -i HEAD~3
# 查看某個檔案的修改歷史
git log --follow -p -- path/to/file
# 找出誰寫了某一行
git blame path/to/file
.gitignore 範本
Laravel + React 專案的基本 .gitignore:
# Laravel
/vendor
/node_modules
/.env
/storage/*.key
/public/hot
/public/storage
/storage/app/public
# IDE
.idea/
.vscode/
*.swp
# OS
.DS_Store
Thumbs.db
# Build
/public/build
結語
Git 工作流不需要很複雜,適合團隊的就是最好的。重要的是大家都遵守同樣的規範,保持一致性。剛開始可能會覺得麻煩,但養成習慣後會讓協作效率大幅提升。
#Git #團隊協作 #版本控制 #工作流