תגיות (Tags)

Tag הוא תווית לcommit מסוים. בניגוד ל-branches שמתקדמים עם כל commit חדש, tag הוא קבוע - הוא תמיד מצביע על אותו commit. השימוש העיקרי: סימון גרסאות שחרור (releases) כמו v1.0.0.

שני סוגי tags

Lightweight tag

תווית פשוטה - בעצם רק שם שמצביע ל-commit, בלי מטא-דאטה נוספת.

git tag v1.0.0
git tag v1.0.0 a3f5c2d      # על commit ספציפי

Annotated tag

תווית מלאה עם מטא-דאטה: שם המתייג, אימייל, תאריך, הודעה. זה הסטנדרט המקצועי.

git tag -a v1.0.0 -m "Release version 1.0.0"
git tag -a v1.0.0 a3f5c2d -m "Release version 1.0.0"
Lightweight Annotated
מטא-דאטה (מחבר, תאריך, הודעה) ❌ ✅
מתאים ל-releases ❌ ✅
משמש לסימון פנימי ✅ ✅

מומלץ: השתמשו תמיד ב-annotated tags ל-releases.

פקודות בסיסיות

צפייה ב-tags

git tag                         # רשימת כל ה-tags
git tag -l "v1.*"               # סינון לפי תבנית
git show v1.0.0                 # פרטי tag

יצירה

git tag v1.0.0                              # lightweight
git tag -a v1.0.0 -m "Release 1.0.0"        # annotated
git tag -a v1.0.0 a3f5c2d -m "..."          # על commit ספציפי

מחיקה

git tag -d v1.0.0               # מחיקה מקומית
git push origin :refs/tags/v1.0.0   # מחיקה מהשרת
git push origin --delete v1.0.0     # תחביר חדש

דחיפת tags לשרת

חשוב: git push רגיל לא דוחף tags. צריך לציין במפורש.

git push origin v1.0.0           # tag ספציפי
git push origin --tags           # כל ה-tags
git push --follow-tags           # רק annotated tags שקשורים ל-commits שנדחפים

שמות tags - Semantic Versioning

הקונבנציה המקובלת בעולם הקוד הפתוח:

v<MAJOR>.<MINOR>.<PATCH>
  • MAJOR - שינוי שבור תאימות אחורה
  • MINOR - פיצ'ר חדש שלא שובר
  • PATCH - תיקון באג

דוגמאות: - v1.0.0 - גרסה ראשונה - v1.0.1 - תיקון באג - v1.1.0 - פיצ'ר חדש - v2.0.0 - שינוי שובר תאימות - v1.0.0-beta.1 - גרסת בטא - v1.0.0-rc.1 - release candidate

דוגמת שחרור גרסה

# 1. ודא שאתה ב-main ומסונכרן
git switch main
git pull

# 2. יצירת tag annotated
git tag -a v1.2.0 -m "Release 1.2.0

- Add user profile page
- Fix login race condition
- Improve dashboard performance"

# 3. דחיפה לשרת
git push origin v1.2.0

# 4. ב-GitHub, יצירת Release מהTag (אופציונלי)

checkout ל-tag

אפשר "לבקר" ב-commit של tag:

git checkout v1.0.0

זה מעביר אתכם למצב "detached HEAD" - אתם לא נמצאים באף branch. לעבודה רגילה, צרו branch חדש מ-tag:

git checkout -b hotfix/v1.0.1 v1.0.0

חיפוש tag רלוונטי

git describe                    # ה-tag הקרוב ביותר ל-HEAD
git describe --tags             # כולל lightweight
git describe HEAD               # אותו דבר במפורש

הפלט יראה משהו כמו v1.2.0-3-ga3f5c2d - כלומר אתם 3 commits אחרי tag v1.2.0.

בדקו את עצמכם

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

  1. למה משמשות תגיות?

    1. לתיאור קבצים
    2. לענפים זמניים
    3. לקונפליקטים
    4. לסימון נקודות חשובות בהיסטוריה, כמו גרסה v1.0.0
    הצגת התשובה

    תשובה ד. annotated tag שומר גם מי, מתי והודעה.