Git المصطلحات
دليل مصطلحات Git من الألف إلى الياء. 60 مصطلحات أساسية مشروحة بلغة بسيطة.
A
السلف
commit يسبق commit آخر في التاريخ. الـ commits الآباء وآباؤها كلها أسلاف.
وسم موصوف (Annotated Tag)
وسم يحفظ بيانات إضافية مثل اسم واضع الوسم وبريده والتاريخ ورسالة. موصى به للإصدارات.
B
مستودع مجرّد (Bare)
مستودع بلا مجلد عمل، يحتوي فقط على محتويات مجلد .git. يُستخدم كمستودع مركزي للمشاركة.
Blob
كائن Git يحفظ محتوى ملف. اختصار لـ «binary large object».
تفرّع
مؤشر متحرك إلى commit. يمثّل خط تطوير مستقلًا في المستودع.
C
Cherry-pick
نسخ تغييرات commit موجود إلى فرعك الحالي كـ commit جديد (بـ hash جديد).
النسخة (Clone)
نسخة كاملة من مستودع بعيد — كل commit، إضافةً إلى فروع التتبّع البعيدة مثل origin/main — تُنشأ بـ git clone.
Commit
لقطة لمستودعك في لحظة معيّنة. تحتوي على شجرة، والـ commit الأب أو الآباء، والمؤلف، والرسالة.
Hash الـ commit
مجموع تحقق SHA-1 من 40 حرفًا يميّز الـ commit بشكل فريد. يمكن غالبًا اختصاره إلى 7 أحرف.
التعارض
يحدث عندما لا يستطيع Git دمج التغييرات تلقائيًا لأن الأسطر نفسها عُدّلت بشكل مختلف في الفرعين.
D
HEAD منفصل (Detached)
حالة يشير فيها HEAD مباشرة إلى commit بدل فرع. التغييرات التي تُجرى هنا قد تضيع إن لم تُحفظ في فرع.
Diff
الفرق بين نسختين من ملف أو مجموعة ملفات. يعرض الإضافات والحذف والتعديلات.
E
مستودع مضمَّن
مجلد له .git خاص به داخل مستودع آخر. لا يسجّله Git إلا كمؤشر إلى commit واحد (gitlink)؛ استخدم الوحدات الفرعية بدلًا منه.
F
Fast-forward
دمج يتقدّم فيه مؤشر الفرع ببساطة لعدم وجود commits متباعدة. لا يُنشأ commit دمج.
Fetch
تنزيل commits ومراجع جديدة من مستودع بعيد دون المساس بفروعك أو بشجرة العمل.
Fixup
إجراء في الـ rebase التفاعلي يذيب commit في الذي قبله ويتخلّص من رسالته.
Force with Lease
git push --force-with-lease: الكتابة فوق الفرع البعيد فقط إن كان ما زال يشير إلى حيث رأيته آخر مرة، فلا يضيع عمل زميل أبدًا.
Fork
نسخة شخصية من مستودع آخر على خدمة استضافة. شائعة في المصادر المفتوحة لاقتراح التغييرات عبر pull requests.
G
commit مُطعَّم (Grafted)
في النسخة السطحية، هو أقدم commit تم تنزيله: آباؤه موجودون على الخادم لكنهم لم يُنزَّلوا قط.
H
HEAD
مؤشر إلى مرجع الفرع الحالي أو الـ commit الحالي. يمثّل موقعك الحالي في تاريخ المستودع.
Hook
سكربت يعمل تلقائيًا عند وقوع أحداث معيّنة في Git، مثل pre-commit أو post-commit أو pre-push.
Hotfix
إصلاح عاجل لكود منشور، يُجرى عادةً على فرع الإصدار، ويوضع له وسم، ثم يُنقل إلى main.
Hunk
كتلة واحدة من الأسطر المعدّلة في diff، مع بضعة أسطر سياق غير معدّلة حولها. يجهّز git add -p جزءًا بعد جزء.
I
الفهرس (Index)
يُسمّى أيضًا منطقة التجهيز. منطقة وسيطة تُجهَّز فيها التغييرات قبل تسجيلها في المستودع.
Rebase تفاعلي
git rebase -i: إعادة كتابة سلسلة من الـ commits بتعديل قائمة مهام (pick، reword، squash، fixup، drop).
L
وسم خفيف (Lightweight Tag)
مؤشر بسيط إلى commit دون أي بيانات إضافية. مجرد اسم لـ commit معيّن.
M
Main/Master
الفرع الرئيسي الافتراضي في المستودع. «main» هو العرف الحديث، و«master» هو الاسم القديم.
commit الدمج
commit له أبوان أو أكثر، يجمع تغييرات فروع مختلفة في واحد.
تعارض الدمج
عندما لا يستطيع Git حل الفروقات بين فرعين تلقائيًا، ويتطلب ذلك حلًا يدويًا من المطوّر.
O
الكائن (Object)
وحدة التخزين الأساسية في Git. هناك أربعة أنواع: blob (ملف)، وtree (مجلد)، وcommit، وtag.
ORIG_HEAD
مرجع يضبطه Git قبل العمليات الخطرة (reset وmerge وrebase) على المكان الذي كان فيه HEAD — والأمر git reset --hard ORIG_HEAD يتراجع عنها.
Origin
الاسم الافتراضي للمستودع البعيد الذي نسخت منه. يشير إلى المصدر الأصلي.
P
الـ commit الأب
الـ commit الذي يسبق commit آخر مباشرة. لـ commits الدمج أكثر من أب.
Pathspec
نمط يُستخدم لتحديد المسارات في أوامر Git. يمكن أن يتضمن أحرف بدل ومسارات مجلدات.
Prune
إزالة فروع التتبّع البعيدة التي لم يعد فرعها موجودًا في المستودع البعيد (git fetch --prune).
Pull
git fetch يليه دمج الـ upstream المجلوب (أو إعادة التأسيس عليه) في فرعك الحالي.
Pull Request
طلب على منصة استضافة (GitHub، GitLab…) لمراجعة فرع ودمجه في آخر. ليس أمرًا من أوامر Git.
Push
رفع الـ commits الخاصة بك إلى مستودع بعيد وتحريك فرعه ليطابق فرعك.
R
Rebase
إعادة تطبيق commits فوق commit أساس آخر، ما ينتج commits جديدة وتاريخًا خطيًا.
مرجع (ref)
اختصار لـ reference (مرجع). مؤشر إلى commit، مثل اسم فرع أو وسم أو HEAD.
Reflog
سجل لكل تحديثات المراجع في مستودعك المحلي. يسجّل متى تتغيّر رؤوس الفروع وHEAD.
فرع الإصدار (Release)
فرع يحمل إصدارًا منشورًا بحيث يمكن إصلاحه بينما يستمر main في التقدّم.
البعيد
نسخة من مستودعك مستضافة في مكان آخر (مثل GitHub أو GitLab). تُستخدم للتعاون والنسخ الاحتياطي.
فرع التتبّع البعيد
إشارة محلية للقراءة فقط إلى فرع بعيد، مثل origin/main، تحدّثها أوامر fetch وpull وpush.
المستودع
مجلد يحتوي على ملفات مشروعك وكامل تاريخ Git المحفوظ في مجلد .git.
Revert
commit جديد يتراجع عن تغييرات commit سابق دون إعادة كتابة التاريخ — آمن على الفروع المشتركة.
S
SHA-1
دالة التجزئة المشفّرة التي يستخدمها Git لتوليد معرّفات فريدة للـ commits والكائنات.
نسخة سطحية (Shallow Clone)
نسخة تحتوي فقط على أحدث الـ commits (git clone --depth N)، شائعة في CI؛ ويمكن تعميقها بـ fetch --depth أو --unshallow.
commit موقَّع
commit يحمل توقيع GPG (أو SSH) يمكن لمنصات الاستضافة عرضه كـ «Verified». يُنشأ بـ git commit -S.
Squash
ضمّ عدة commits في commit واحد، مثلًا بالـ rebase التفاعلي أو git merge --squash.
منطقة التجهيز
المنطقة الوسيطة بين مجلد العمل والمستودع، حيث تجهّز الـ commits. تُسمّى أيضًا الفهرس.
Stash
رفّ مؤقت للتغييرات غير المسجّلة (git stash)، لتنتقل إلى مهمة أخرى بشجرة عمل نظيفة.
وحدة فرعية (Submodule)
مستودع مضمَّن داخل مستودع آخر. مفيد لتضمين اعتماديات خارجية بإصدار محدد.
T
الوسم
مرجع باسم يشير إلى commit محدد. يُستخدم عادةً لتعليم الإصدارات مثل v1.0.0.
فرع متتبِّع
فرع محلي له علاقة مباشرة بفرع بعيد. يتيح push/pull دون تحديد المستودع البعيد.
Tree (الشجرة)
كائن Git يمثّل مجلدًا. يحتوي على مراجع إلى blobs (ملفات) وأشجار أخرى (مجلدات فرعية).
U
ملف غير متتبَّع
ملف في مجلد العمل لا يراقبه Git. لا يدخل في الـ commits حتى تضيفه صراحةً.
Upstream
الفرع البعيد الذي يتتبّعه فرع محلي. المصدر الذي تُسحب منه التغييرات.
W
مجلد العمل
المجلد في نظام ملفاتك حيث تعدّل الملفات. يحتوي على النسخة الحالية من مشروعك.
شجرة العمل
اسم آخر لمجلد العمل. الملفات التي تراها وتعدّلها في مجلد المشروع.