MASTRILOالدورة/استكشاف الـ Objects من الداخل
MASTRILO

استكشاف الـ Objects من الداخل

تعرفنا إلى الـ Blob و الـ Tree و الـ Commit كل على حدة. حان الوقت الآن لإنشاء هذه الـ Objects ثم الانتقال بينها داخل مستودع واحد، من الـ Commit حتى نصل إلى محتوى الملف.

قراءة محتوى Object

يعرض الأمر التالي محتوى Object بطريقة تناسب نوعه:

bash
git cat-file -p <hash>

ضع معرف الـ Object مكان <hash>. إذا كان Blob فسترى المحتوى. و إذا كان Tree أو Commit فسترى الحقول التي يحتوي عليها. لا تحتاج إلى حفظ الأمر الآن فسنستخدمه عدة مرات خلال الدرس.

يحتوي الـ Terminal بجانبك على ملف hello.txt داخل مستودع جاهز. أنشئ أول Commit:

bash
git add hello.txt
git commit -m "Add hello"

بعد تنفيذ الأمرين ستظهر الـ Objects الجديدة في الرسم البياني.

استكشاف Blob Object

يحمل الـ Blob الذي أنشأناه المحتوى التالي:

text
Hello Git

عند قراءة هذا الـ Blob يعرض Git Hello Git فقط. لن يظهر اسم hello.txt أو مساره لأنهما ليسا جزءا من الـ Blob.

استكشاف Tree Object

تعرض قراءة الـ Tree مدخلا لكل ملف أو مجلد. قد يبدو المخرج هكذا:

text
100644 blob a1b2c3d hello.txt
100644 blob d4e5f6a app.js

يحتوي كل سطر على mode و نوع الـ Object و معرفه ثم الاسم. في هذا المثال يقود كل معرف إلى Blob:

text
hello.txt → Blob A
app.js    → Blob B

هكذا يربط الـ Tree أسماء الملفات بالمحتوى المخزن في الـ Blobs.

ابدأ بعرض سجل الـ Commits:

bash
git log

انسخ المعرف الذي يظهر بعد كلمة commit و استخدمه مكان <commit-hash>:

bash
git cat-file -p <commit-hash>

انسخ المعرف الموجود في سطر tree و استخدمه مكان <tree-hash>:

bash
git cat-file -p <tree-hash>

أخيرا انسخ معرف الـ Blob المقابل للملف hello.txt و استخدمه مكان <blob-hash>:

bash
git cat-file -p <blob-hash>

ستصل في النهاية إلى المحتوى Hello Git.

استكشاف Commit Object

عند قراءة Commit Object سنجد معلومات شبيهة بالتالي:

text
tree 88e1d5ea8485d69519c52643b7d4565b55f69f54
parent 2589e42028134c2d2321393d7abe2ec43227ad26
author Developer <dev@example.com> 1781895642 +0100
committer Developer <dev@example.com> 1781895642 +0100
 
Add discount support

تختلف المعرفات و البيانات من Commit إلى آخر لكن الحقول الأساسية واضحة:

  • يشير سطر tree إلى Tree المشروع.
  • يظهر سطر parent عندما يوجد Commit سابق.
  • تسجل أسطر author و committer بيانات المؤلف و منشئ الـ Commit.
  • تأتي الرسالة بعد سطر فارغ.

كل ما تعلمناه في الدروس السابقة يظهر هنا بشكل مباشر.

ربط أجزاء الصورة

يمكن الآن تتبع المسار كاملا:

text
Commit
 │
 ├── Tree
 │      │
 │      ├── hello.txt → Blob
 │      └── app.js    → Blob
 │
 └── Parent

من الـ Commit نصل إلى Tree المشروع. و من مدخلات الـ Tree نصل إلى محتوى الملفات. أما الـ Parent فيقود إلى Commit سابق لا إلى ملف داخل الحالة الحالية.

الصورة الحالية

أنشأنا Commit و قرأنا محتواه ثم انتقلنا منه إلى الـ Tree فالـ Blob. في الدرس التالي سنرى كيف تشكل الـ Commits و علاقات الـ Parent بينها ما يسمى Commit Graph.

اختبر معلوماتك

سجّل دخولك للإجابة على الأسئلة وحفظ تقدّمك.

سجّل الدخول
اللوحات
نوع الخط
حجم الخط
أكملت 0 من 41 درس

Git Objects

6.استكشاف الـ Objects من الداخل

Git on Your Machine941 استكشاف الـ Objects من الداخلمكافأة إكمال الدرس إضافة إلى نقاط أنشطته. 10 XP. تُمنح المكافأة مرة واحدة فقط.