# نموذج Git مقابل HTTP

مكتبة `huggingface_hub` هي مكتبة للتفاعل مع Hugging Face Hub، وهو مجموعة من المستودعات القائمة على git (نماذج، مجموعات بيانات أو Spaces). هناك طريقتان رئيسيتان للوصول إلى Hub باستخدام `huggingface_hub`.

تعتمد الطريقة الأولى، المعروفة بالطريقة "المبنية على git"، على استخدام أوامر `git` القياسية مباشرةً في الطرفية. تتيح لك هذه الطريقة استنساخ المستودعات وإنشاء التزامات ودفع التغييرات يدويًا. أما الخيار الثاني، المسمى بالطريقة "المبنية على HTTP"، فيتمثل في إرسال طلبات HTTP باستخدام عميل [HfApi](/docs/huggingface_hub/v2.4.0/ar/package_reference/hf_api#huggingface_hub.HfApi). دعونا نفحص إيجابيات وسلبيات كل طريقة.

## Git: النهج التاريخي القائم على سطر الأوامر

في البداية، تفاعل معظم المستخدمين مع Hugging Face Hub باستخدام أوامر `git` بسيطة مثل `git clone`، `git add`، `git commit`، `git push`، `git tag`، أو `git checkout`.

تتيح لك هذه الطريقة العمل مع نسخة محلية كاملة من المستودع على جهازك، تمامًا كما هو الحال في تطوير البرمجيات التقليدي. وقد يكون ذلك ميزة عندما تحتاج إلى وصول دون اتصال أو ترغب في العمل مع السجل الكامل للمستودع. ومع ذلك، فإنها تأتي أيضًا بعيوب: فأنت مسؤول عن إبقاء المستودع محدثًا محليًا، والتعامل مع بيانات الاعتماد، وإدارة الملفات الكبيرة (عبر `git-lfs`)، مما قد يصبح أمرًا متعبًا عند العمل مع نماذج تعلم الآلة الكبيرة أو مجموعات البيانات.

في العديد من سير عمل تعلّم الآلة، قد تحتاج فقط إلى تنزيل عدد قليل من الملفات للاستدلال أو تحويل الأوزان دون الحاجة إلى استنساخ المستودع بأكمله. في مثل هذه الحالات، يمكن أن يكون استخدام `git` مبالغاً فيه ويُدخل تعقيداً غير ضروري.

## HfApi: عميل HTTP مرن وسهل الاستخدام

طُوّرت فئة [HfApi](/docs/huggingface_hub/v2.4.0/ar/package_reference/hf_api#huggingface_hub.HfApi) لتوفير بديل لاستخدام مستودعات git المحلية، والتي قد تكون متعبة في الصيانة، خاصة عند التعامل مع نماذج أو مجموعات بيانات كبيرة. توفر فئة [HfApi](/docs/huggingface_hub/v2.4.0/ar/package_reference/hf_api#huggingface_hub.HfApi) نفس الوظائف التي توفرها سير عمل git -مثل تنزيل الملفات ودفعها وإنشاء الفروع والوسوم- ولكن دون الحاجة إلى مجلد محلي يجب الحفاظ على مزامنته.

بالإضافة إلى الوظائف التي يوفرها `git` بالفعل، توفّر فئة [HfApi](/docs/huggingface_hub/v2.4.0/ar/package_reference/hf_api#huggingface_hub.HfApi) ميزات إضافية، مثل القدرة على إدارة المستودعات، وتنزيل الملفات باستخدام التخزين المؤقت لإعادة الاستخدام بكفاءة، والبحث في Hub عن المستودعات والبيانات الوصفية، والوصول إلى ميزات المجتمع مثل النقاشات وطلبات الدمج والتعليقات، وإعداد العتاد والأسرار الخاصة بـ Spaces.

## ماذا يجب أن أستخدم؟ ومتى؟

بشكل عام، يُعدّ **النهج المبني على HTTP هو الطريقة الموصى بها لاستخدام** `huggingface_hub` في جميع الحالات. يتيح لك [HfApi](/docs/huggingface_hub/v2.4.0/ar/package_reference/hf_api#huggingface_hub.HfApi) سحب التغييرات ودفعها، والعمل مع طلبات الدمج والوسوم والفروع، والتفاعل مع النقاشات، وأكثر من ذلك بكثير.

ومع ذلك، لا تتوفر جميع أوامر git عبر [HfApi](/docs/huggingface_hub/v2.4.0/ar/package_reference/hf_api#huggingface_hub.HfApi). قد لا يتم تنفيذ بعضها على الإطلاق، لكننا نعمل دائمًا على التحسين وسد الفجوة. إذا لم تجد استخدامك مغطى، فيرجى فتح [مشكلة على GitHub](https://github.com/huggingface/huggingface_hub)! نرحب بملاحظاتكم للمساعدة في بناء نظام HF البيئي مع مستخدمينا ولأجلهم.

لا يعني تفضيل [HfApi](/docs/huggingface_hub/v2.4.0/ar/package_reference/hf_api#huggingface_hub.HfApi) القائم على بروتوكول HTTP على أوامر `git` المباشرة أن نظام إصدارات git سيختفي من Hugging Face Hub في أي وقت قريب. وسيظل من الممكن دائمًا استخدام `git` محليًا في سير العمل التي يكون فيها ذلك منطقيًا.

