תגיות (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.
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
למה משמשות תגיות?
הצגת התשובה
תשובה ד. annotated tag שומר גם מי, מתי והודעה.