תהליכי עבודה (Workflows)

Workflow הוא קונבנציה מוסכמת על איך הצוות עובד עם git. אין "workflow נכון אחד" - יש כמה גישות פופולריות, כל אחת מתאימה לסוג אחר של פרויקט. הקובץ הזה מציג את השלוש הנפוצות.

1. Feature Branch Workflow

הפשוט והנפוץ ביותר. מתאים לרוב הצוותים הקטנים והבינוניים.

עקרונות

  • main תמיד יציב וזמין לפריסה
  • כל פיצ'ר מקבל branch משלו
  • merge ל-main מתבצע דרך Pull Request

זרימה

# 1. סנכרון main
git switch main
git pull

# 2. branch חדש לפיצ'ר
git switch -c feature/user-profile

# 3. עבודה וcommits
git add .
git commit -m "Add user profile component"

# 4. דחיפה
git push -u origin feature/user-profile

# 5. יצירת Pull Request ב-GitHub

# 6. אחרי merge - ניקוי
git switch main
git pull
git branch -d feature/user-profile

יתרונות

  • פשוט להבנה
  • מתאים לכל גודל צוות
  • ה-main נשאר נקי ויציב

2. Git Flow

זרימה מורכבת יותר עם branches קבועים מרובים. מתאימה לפרויקטים גדולים עם releases מתוכננים.

Branches קבועים

Branch תפקיד
main קוד שנמצא ב-production
develop אינטגרציה - הקוד הבא לפריסה

Branches זמניים

תבנית תפקיד
feature/* פיצ'ר חדש - מ-develop ל-develop
release/* הכנה לרילוז - מ-develop ל-main + develop
hotfix/* תיקון דחוף - מ-main ל-main + develop

זרימה

# פיצ'ר חדש
git switch develop
git switch -c feature/login
# ...עבודה...
git switch develop
git merge feature/login

# הכנת release
git switch -c release/v1.2.0 develop
# ...בדיקות, תיקוני באגים קטנים...
git switch main
git merge release/v1.2.0
git tag v1.2.0
git switch develop
git merge release/v1.2.0

# Hotfix
git switch -c hotfix/critical-bug main
# ...תיקון...
git switch main
git merge hotfix/critical-bug
git tag v1.2.1
git switch develop
git merge hotfix/critical-bug

יתרונות

  • מתאים ל-releases מסודרים
  • הפרדה ברורה בין production ל-development

חסרונות

  • מורכב
  • לא מתאים לפרויקטים עם CI/CD רציף

3. GitHub Flow

הפשוט מבין השלושה. כל פיצ'ר ישר ל-main, בלי develop באמצע.

עקרונות

  • רק branch אחד קבוע: main
  • כל פיצ'ר ב-feature branch
  • merge ל-main = פריסה ל-production מיד

זרימה

git switch main
git pull
git switch -c feature/login
# ...עבודה...
git push -u origin feature/login
# יצירת PR
# מיזוג + פריסה אוטומטית

מתי מתאים?

  • פרויקטי SaaS עם CI/CD חזק
  • צוותים שעושים deploy מספר פעמים ביום
  • מוצרי web

4. Trunk-Based Development

קיצון של GitHub Flow - branches קצרים מאוד (שעות-יום), לפעמים בכלל ישירות ל-main מאחורי feature flags.

עקרונות

  • אין branches ארוכי-חיים
  • שינויים קטנים, תכופים
  • שימוש ב-feature flags לכיבוי פיצ'רים שלא מוכנים
  • CI חזק שמוודא ש-main תמיד יציב

מתי מתאים?

  • צוותים עם תרבות CI/CD בוגרת
  • צוותים גדולים שצריכים להימנע מקונפליקטים גדולים

איך לבחור?

צוות המלצה
1-3 מפתחים Feature Branch או GitHub Flow
4-15 מפתחים, web product GitHub Flow
צוות עם releases מסודרים Git Flow
צוות גדול עם CI/CD חזק Trunk-Based

קונבנציות שמות branches

לא משנה איזה workflow בחרת - השמות צריכים להיות מובנים:

feature/user-profile
feature/checkout-flow
bugfix/header-alignment
bugfix/login-error-message
hotfix/security-vulnerability
release/v2.0
experiment/new-architecture
chore/update-deps

הקידומת מסבירה מיד מהו ה-branch. השם אחריה ברור ותמציתי.

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. מה עיקרון GitHub Flow?

    1. ענף לכל מפתח לתמיד
    2. כולם עובדים ישר על main
    3. ענף קצר לכל שינוי, Pull Request, בדיקה ומיזוג ל-main
    4. בלי ענפים
    הצגת התשובה

    תשובה ג. main תמיד במצב שאפשר להעלות לאוויר.