إنشاء وسوم وصفية للنسخ المحفوظة في مستودع Git
- مفهوم الوسوم الوصفية في Git
- إضافة وسم للنسخة
- عرض أسماء الوسوم
- عرض تفاصيل الوسوم
- حذف الوسوم الوصفية
- تطبيق عملي و شامل لكل ما تعلمته
مفهوم الوسوم الوصفية في Git
عند العمل على مشروع برمجي باستخدام نظام التحكم بالإصدارات Git، يقوم المطورون بإجراء تعديلات مستمرة على الملفات، و يتم حفظ هذه التعديلات على شكل نسخ ( Commits ) في المستودع الخاص بالمشروع. مع مرور الوقت و خصوصاً في المشاريع الكبيرة، قد يحتوي المستودع على مئات أو آلاف النسخ، كل واحد منها تمثل نقطة زمنية مختلفة من تطور المشروع.
هذا الأمر يخلق تحدياً عملياً و هو كيف يمكننا تحديد اللحظات المهمة في هذا المستودع المليئ بالنسخ مثل:
- إصدار النسخة الأولى من البرنامج.
- نسخة مستقرة جاهزة للاستخدام.
- نسخة تجريبية تحتوي على ميزة جديدة.
- نقطة نريد الرجوع إليها لاحقاً عند حدوث مشكلة.
الرجوع لنسخة محددة من المشروع بالاعتماد على الهاش كود ( Hash Code ) الخاص بالنسخة فقط هو أمر صعب جداً لأن هذه الأرقام تكون طويلة و ليس من السهل تذكرها أو حفظها. هنا تظهر الوسوم ( Tags ) لتحل هذه المشكلة.
إضافة وسم للنسخة
لإضافة وسم لنسخة موجودة في مستودع المشروع يمكنك استخدام الأمر git tag كما يلي:
git tag <tagname>لإضافة وسم لآخر نسخة تم إضافتها في المستودع.git tag -a <tagname> -m "message"لإضافة وسم لآخر نسخة تم إضافتها في المستودع و تتضمن معلومات تفصيلية كإسم منشئ النسخة، تاريخ إنشاءها بالإضافة إلى الوصف الذي يتم تمريره لها كنص.git tag <tagname> <commit-hash>لإضافة وسم لنسخة محددة في المستودع بالإعتماد على الهاش كود الخاص بها.
إسم الوسم يجب أن يتألف من كلمة واحدة فقط و لا يمكن أن يحتوي مسافات فارغة.
يمكنك إضافة أكثر من وسم لنفس النسخة و لكن الأفضل أن لا تفعل ذلك حتى لا تربك نفسك.
عرض أسماء الوسوم
يمكنك استخدام الأمر git tag لعرض جميع أسماء الوسوم الخاصة بالمستودع من الأقدم إلى الأحدث.
عرض تفاصيل الوسوم
يمكنك استخدام الأمر git show <tagname> لعرض التفاصيل المرفقة مع وسم محدد.
حذف الوسوم الوصفية
يمكنك استخدام الأمر git -d tag <tagname> لحذف الوسم.
في Git لا يمكنك تعديل أو تحديث الوسوم و بالتالي فإنك في حال أردت ذلك سيكون عليك حذف الوسم و من ثم إعادة إنشاؤه.
تطبيق عملي و شامل لكل ما تعلمته
سنفترض أنه لديك مشروع يتكون من مجلّد إسمه demo و بداخله 3 ملفات إسمهم file1.txt و file2.txt و file3.txt.
الآن، إفتح موجّه الأوامر و توجه إلى المجلد demo لتبدأ التجربة عليه.
1- فيما يلي قمنا باستخدام الأمر git init لإنشاء مستودع .git بداخل مجلد المشروع demo.
Terminal
2- فيما يلي قمنا باستخدام الأمر git add لتجهيز جميع الملفات ليتم إضافتها في النسخة القادمة التي يتم إنشاؤها من المشروع demo.
Terminal
3- فيما يلي قمنا باستخدام الأمر git commit لحفظ نسخة من المشروع.
Terminal
[master (root-commit) c5c7b4e] Basic setup
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1.txt
create mode 100644 file2.txt
create mode 100644 file3.txt
c5c7b4e هي أول 7 أحرف من قيمة الهاش كود الخاص بالنسخة التي قمنا بإنشاءها قبل قليل.
في حال قمت باستخدام الأمر git log فإنه سيتم عرض قيمة الهاش كود الخاص بالنسخة بشكل كامل.
4- فيما يلي قمنا باستخدام الأمر git tag لإضافة وسم للنسخة السابقة التي تم إنشاؤها.
Terminal
5- فيما يلي قمنا باستخدام الأمر git tag لعرض جميع الوسوم الخاصة بالمشروع.
Terminal
v1.0.0
نلاحظ أنه ظهر وسم واحد فقط لأننا لم نقم بإنشاء سواه حتى اللحظة.
6- فيما يلي قمنا باستخدام الأمر git show لعرض معلومات تفصيلية حول النسخة المرتبطة بالوسم v1.0.0.
Terminal
commit c5c7b4eaf329d2fe3d327aed612f55246476afa2 (HEAD -> master, tag: v1.0.0)
Author: mhamad <mhamad.harmush@gmail.com>
Date: Thu Feb 12 13:16:25 2026 +0200
Basic setup
diff --git a/file1.txt b/file1.txt
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/file1.txt
@@ -0,0 +1 @@
+test
diff --git a/file2.txt b/file2.txt
new file mode 100644
index 0000000..e69de29
diff --git a/file3.txt b/file3.txt
new file mode 100644
index 0000000..e69de29
عند كتابة الأمر git show يصبح بإمكانك استخدام الأسهم ▼ ▲ لعرض معلومات تفصيلية حول التغييرات التي طرأت على الملفات الموجودة في النسخة - حتى تظهر لك كما ظهرت لنا - و حين تريد الخروج من الأمر سيكون عليك النقر فقط على الحرف q.
7- فيما يلي قمنا باستخدام الأمر git tag لحذف الوسم v1.0.0.
Terminal
Deleted tag 'v1.0.0' (was c5c7b4e)
8- فيما يلي قمنا باستخدام الأمر git tag لإنشاء الوسم v1.0.0 من جديد مع إرفاق رسالة توضيحية معه.
Terminal
9- فيما يلي قمنا باستخدام الأمر git show لعرض معلومات تفصيلية حول النسخة المرتبطة بالوسم v1.0.0.
Terminal
tag v1.0.0
Tagger: mhamad <mhamad.harmush@gmail.com>
Date: Thu Feb 12 15:15:24 2026 +0200
Version 1.0.1 release
commit c5c7b4eaf329d2fe3d327aed612f55246476afa2 (HEAD -> master, tag: v1.0.0)
Author: mhamad <mhamad.harmush@gmail.com>
Date: Thu Feb 12 13:16:25 2026 +0200
Basic setup
diff --git a/file1.txt b/file1.txt
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/file1.txt
@@ -0,0 +1 @@
+test
diff --git a/file2.txt b/file2.txt
new file mode 100644
index 0000000..e69de29
diff --git a/file3.txt b/file3.txt
new file mode 100644
index 0000000..e69de29
هذه المرة نلاحظ أنه تم إظهار معلومات الوسم نفسه بشكل مفصل قبل إظهار معلومات النسخة الخاصة به.
10- فيما يلي قمنا بإضافة وسم آخر إسمه v1.0.1 لنفس النسخة بالإعتماد على الهاش كود الخاص بها.
Terminal
11- فيما يلي قمنا بإضافة وسم آخر إسمه v1.0.2 لنفس النسخة بالإعتماد على الهاش كود الخاص بها مع إرفاق رسالة توضيحية أيضاً.