git tag
إنشاء الوسوم وسردها وحذفها
يعطي الأمر 'git tag' اسمًا ثابتًا لـ commit، عادة إصدارًا مثل v1.0. على عكس الفرع، لا يتحرّك الوسم أبدًا. الوسم الخفيف مجرد اسم؛ أما الوسم المُعلَّق (-a) فكائن كامل فيه منشئ الوسم وتاريخ ورسالة، وهو النوع الموصى به للإصدارات. لا تُدفع الوسوم تلقائيًا: ادفعها بـ git push origin <tag>.
الصيغة
git tag [-a | -s] [-f] [-m <msg>] <tagname> [<commit>]
git tag -d <tagname>...
git tag [-n[<num>]] -l [<pattern>...]الخيارات
اختيار الخيار المناسب
خفيف مقابل مُعلَّق
نوعان من الوسوم
| الأمر | يخزّن | يُستخدم لـ |
|---|---|---|
git tag v1.0 | الاسم فقط | علامات شخصية |
git tag -a v1.0 -m "..." | المنشئ، التاريخ، الرسالة | الإصدارات |
وسم مقابل فرع
كلاهما يسمّي commit
| الأمر | يتقدّم مع كل commit؟ | يدفعه git push؟ |
|---|---|---|
Branch | نعم | نعم (الفرع الحالي) |
Tag | أبدًا | لا، ادفعه صراحةً |
أمثلة
وسم الـ commit الحالي
git tag v1.0وسم خفيف باسم v1.0.
وسم مُعلَّق
git tag -a v1.0 -m "First release"وسم مع منشئه وتاريخ ورسالة.
دفع وسم
git push origin v1.0مشاركة الوسم على المستودع البعيد.
عرض الوسوم
git tag -l "v1.*"سرد الوسوم المطابقة لنمط.
أمثلة على سير العمل
git switch main && git pullأن تكون على أحدث main
git tag -a v1.0 -m "First release"إنشاء وسم الإصدار
git push origin v1.0مشاركته
حل المشكلات
fatal: tag 'v1.0' already exists
السبب: الاسم مستخدم
اختر اسمًا آخر، أو احذفه أولًا (git tag -d v1.0)
وسمي غير موجود على GitHub
السبب: لا يرسل git push الوسوم
git push origin v1.0، أو git push --tags
وسم محذوف يعود بعد fetch
السبب: ما زال موجودًا على المستودع البعيد
احذفه هناك أيضًا: git push origin --delete v1.0
نصائح وأخطاء شائعة
أفضل الممارسات
- ✓استخدم الوسوم المُعلَّقة (annotated) للإصدارات.
- ✓اتبع الترقيم الدلالي للإصدارات (v1.2.3).
- ✓لا تنقل وسمًا ولا تُعِد استخدامه بعد نشره.
أخطاء متكررة
- ✗توقّع أن يرسل git push الوسوم — ادفعها صراحةً أو استخدم --follow-tags.
- ✗استخدام الوسوم الخفيفة للإصدارات: لا تسجّل مؤلفًا ولا تاريخًا ولا رسالة.
- ✗نقل وسم جلبه الآخرون بالفعل.
الأسئلة الشائعة
git switch --detach v1.0، أو أنشئ منه فرعًا: git switch -c hotfix v1.0.
git push --tags (أو git push --follow-tags للوسوم المعلَّقة على الـ commits المدفوعة).
يسمّي commit نسبةً إلى أقرب وسم، مثل v1.0-3-g1a2b3c4.