工具 5 分鐘閱讀

Git 團隊協作工作流:從混亂到有序

Git 團隊協作工作流:從混亂到有序

前言

一個人寫程式時 Git 怎麼用都行,但團隊協作就不一樣了。沒有規範的 Git 使用方式,很容易搞出一堆衝突和混亂。這篇文章分享適合中小型團隊的 Git 工作流程。

分支策略:GitHub Flow

對大多數接案專案來說,我推薦 GitHub Flow,它比 Git Flow 簡單很多:

核心原則

  1. main 分支永遠是可部署的狀態
  2. 要開發新功能,從 main 建立新分支
  3. 在分支上開發,定期推送
  4. 準備好了就發 Pull Request
  5. 通過 Review 後合併回 main
  6. 合併後立即部署

分支命名規範

# 功能開發
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 #團隊協作 #版本控制 #工作流
Thousand Lab

Thousand Lab