مستكشف الكائنات
لـ git سمعة بأنه معقّد. وكل ذلك تقريبًا آتٍ من عدم رؤية النموذج قط: أربعة أنواع من الكائنات، ومؤشرات. وحالما تستطيع النقر على التزام، والهبوط على شجرته، واكتشاف أن ملفك هو كتلة أعطتها شجرةٌ اسمًا، يكفّ الغلاف الظاهر عن كونه سحرًا.
⌘K ← مستكشف الكائنات. لا شيء في هذه الصفحة يستطيع تغيير بايت واحد — فكل
استدعاء خلفها قراءة.

الكائنات الأربعة
| الكائن | هو | يعرف |
|---|---|---|
| blob | محتويات ملف | لا شيء. لا اسمه ولا مساره ولا سجله |
| tree | سرد لمجلد | الأسماء والأنماط وبصمة sha لكل كتلة أو شجرة ابنة |
| commit | لقطة واحدة | شجرته وآباؤه والمؤلف والملتزِم والرسالة |
| tag | وسم موصوف | الكائن الذي يشير إليه، والواسم، ورسالة |
المفاجأة عند معظم الناس هي الصف الأول. الكتلة بلا اسم. ملفان بمحتوى متطابق في أي موضع من سجلك هما الكتلة نفسها، مخزَّنة مرة واحدة. الاسم يعيش في الشجرة التي تشير إليها — ولهذا يتتبّع git المحتوى لا الملفات، ولهذا تُكتشف عمليات إعادة التسمية بدل أن تُسجَّل.
والمرجع — refs/heads/main وrefs/tags/v1.0 وHEAD — ليس إلا ملفًا يحوي
بصمة sha. هذا هو كل ما تعنيه عبارة «التفريع رخيص».
التجوّل
يسرد العمود الجانبي كل مرجع في المستودع، مجموعًا كما يجمعه git. انقر واحدًا لتهبط على الكائن الذي يسمّيه.
ومن هناك كل شيء رابط:
- الالتزام يعرض
treeالخاص به وكلparent— انقر للعبور إلى اللقطة، أو للرجوع في السجل التزامًا التزامًا. - الشجرة تسرد مدخلاتها بالنمط والنوع وبصمة sha والحجم. انقر اسمًا لفتح ذلك الابن.
- الكتلة تعرض نصها (أوله، إن كانت كبيرة)، أو تقول بوضوح إنها ثنائية.
- الوسم الموصوف يعرض ما يشير إليه — انقر للعبور إلى الالتزام.
رجوع يعيد تتبّع خطواتك.
كتابة مراجعة
يقبل الصندوق أي شيء يقبله git rev-parse، وهنا يكفّ هذا عن كونه متصفحًا ويصير
طريقة للتعلّم:
| اكتب هذا | لتحصل على |
|---|---|
HEAD |
الالتزام الحالي |
HEAD~3 |
ثلاثة التزامات إلى الوراء |
HEAD^{tree} |
شجرة ذلك الالتزام، مقشَّرة |
HEAD:src/app.ts |
الكتلة الخاصة بذلك المسار، مباشرةً |
v1.0^{} |
ما يشير إليه وسم موصوف، بدل كائن الوسم نفسه |
a1b2c3d |
أي كائن، ببصمته — والاختصارات تعمل |
أرقام النمط في سرد الشجرة تستحق المعرفة: 100644 ملف، و100755 تنفيذي،
و040000 شجرة فرعية، و120000 رابط رمزي، و160000 رابط وحدة فرعية — وهذا
الأخير هو كل ما تخزّنه الوحدة الفرعية.
حدود تستحق المعرفة
- للقراءة فقط، عن قصد. لا شيء هنا يُكتب به. صنع الكائنات يدويًا تمرينٌ على
git hash-object، ومكانه الطرفية. - الكتل الكبيرة تُبتر بعد أول 200 كيلوبايت — بما يكفي لرؤية ما هي، ولا يكفي لتعليق النافذة.
- الأحجام هي حجم محتوى الكائن كما يبلّغ عنه
git cat-file -s، لا ما يكلّفه على القرص بعد الحزم. ولذلك انظر الصيانة. - الكائنات غير القابلة للوصول تبقى كائنات. الصق بصمة من تقرير
git fsckعن الكائنات المعلّقة فتُفتح، وهذه غالبًا أسرع طريقة لرؤية ما كان يحويه التزام ضائع قبل أن تقرر استعادته من عدمه.
انظر أيضًا: الرسم البياني · صيانة المستودع · الاستعادة