شرح - ماهو git




كيفية إنشاء مستودع Git عن بعد من مستودع محلي؟ (4)

المستودع عن بعد هو مستودع بشكل عام - مستودع Git لا يحتوي على دليل عملي. نظرًا لأنه يتم استخدام المستودع كنقطة تعاون فقط ، فلا يوجد سبب لوجود اللقطات المسحوبة على القرص ؛ انها مجرد بيانات Git. في أبسط المصطلحات ، فإن المستودع المجرد هو محتويات دليل .git للمشروع الخاص بك ولا شيء آخر.

يمكنك عمل مستودع git gre مع الكود التالي:

$ git clone --bare /path/to/project project.git

هناك خيار واحد لوجود مستودع git بعيد يستخدم بروتوكول SSH:

بروتوكول نقل عام لـ Git عندما يكون الاستضافة الذاتية على SSH. وذلك لأن وصول SSH إلى الخوادم تم إعداده بالفعل في معظم الأماكن - وإذا لم يكن كذلك ، فمن السهل القيام به. SSH هو بروتوكول شبكة مصادق عليه ، لأنه في كل مكان ، فإنه من السهل بشكل عام إعداده واستخدامه.

لاستنساخ مستودع Git عبر SSH ، يمكنك تحديد عنوان ssh:// URL مثل:

$ git clone ssh://[[email protected]]server/project.git

أو يمكنك استخدام صيغة أقصر مثل scp لبروتوكول SSH:

$ git clone [[email protected]]server:project.git

في كلتا الحالتين أعلاه ، إذا لم تحدد اسم المستخدم الاختياري ، يفترض Git أن المستخدم الذي قمت بتسجيل دخولك حاليًا باسمه.

الايجابيات

الايجابيات لاستخدام SSH كثيرة. أولاً ، من السهل نسبيًا إعداد SSH - شواهد SSH شائعة ، والعديد من مدراء الشبكات لديهم خبرة معهم ، ويتم إعداد العديد من توزيعات OS معهم أو لديهم أدوات لإدارتها. بعد ذلك ، يعد الوصول عبر SSH آمنًا - حيث يتم تشفير جميع عمليات نقل البيانات والمصادقة عليها. وأخيرًا ، مثل HTTPS و Git والبروتوكولات المحلية ، يتميز SSH بالكفاءة ، مما يجعل البيانات مضغوطة قدر الإمكان قبل نقلها.

السلبيات

يتمثل الجانب السلبي لـ SSH في أنه لا يدعم الوصول المجهول لمستودع Git الخاص بك. إذا كنت تستخدم SSH ، فيجب أن يكون لدى الأشخاص وصول SSH إلى جهازك ، حتى إذا كان قابلاً للقراءة فقط ، الأمر الذي لا يجعل SSH مؤاتياً لمشاريع مفتوحة المصدر قد يرغب الناس ببساطة في استنساخ المستودع لفحصها. إذا كنت تستخدمها فقط داخل شبكة الشركة الخاصة بك ، فقد يكون SSH هو البروتوكول الوحيد الذي تحتاج إلى التعامل معه. إذا كنت تريد السماح بالوصول المجهول للقراءة فقط إلى المشاريع الخاصة بك وترغب أيضًا في استخدام SSH ، فسيتعين عليك إعداد SSH بحيث يمكنك الدفع بدلاً من ذلك ولكن هناك شيء آخر قد يجلبه الآخرون.

لمزيد من المعلومات ، راجع المرجع: Git on the Server - The Protocols

لدي مستودع Git محلي. أرغب في إتاحتها على جهاز خادم يعمل عن بعد باستخدام ssh. كيف أقوم بهذا العمل؟


تحتاج إلى إنشاء دليل على خادم بعيد. ثم استخدم أمر "git init" لتعيينه كمستودع. يجب القيام بذلك لكل مشروع جديد لديك (كل مجلد جديد)

بافتراض أنك قمت بالفعل بإعداد واستخدام git باستخدام مفاتيح ssh ، كتبت نص برمجي صغير ، والذي عند تنفيذه من دليل عمل سوف يقوم بإعداد جهاز تحكم عن بعد وتهيئة الدليل على هيئة git repo. وبالطبع ، سيكون عليك تحرير البرنامج النصي (مرة واحدة فقط) لإخباره بالخادم ومسار الجذر لجميع المستودعات.

تحقق هنا - https://github.com/skbobade/ocgi


ملاحظة للأشخاص الذين قاموا بإنشاء النسخة المحلية على Windows ويريدون إنشاء مستودع بعيد عن بعد على نظام Unix-line ، حيث تحصل الملفات النصية على نهايات LF على استنساخات أخرى بواسطة المطورين على أنظمة Unix-like ، لكن نهايات CRLF على Windows.

إذا قمت بإنشاء مستودع ويندوز الخاص بك قبل إعداد ترجمة نهاية السطر ، فستواجه مشكلة. الإعداد الافتراضي لـ Git ليس ترجمة ، لذا فإن مجموعة العمل الخاصة بك تستخدم CRLF ولكن المستودع (أي البيانات المخزنة تحت .git) قام بحفظ الملفات كـ CRLF أيضًا.

عندما تضغط على جهاز التحكم عن بعد ، يتم نسخ الملفات المحفوظة كما هي ، ولا تحدث ترجمة نهاية السطر. (تحدث ترجمة النهاية الخطية عندما يتم ضغط الملفات إلى مستودع ، وليس عندما يتم دفع مستودعات التخزين). ينتهي بك الأمر مع CRLF في المستودع الخاص بك يشبه يونكس ، وهو ما لا تريد.

للحصول على LF في مستودع التخزين عن بعد ، عليك التأكد من أن LF موجود في المستودع المحلي أولاً ، عن طريق إعادة تسوية مستودع Windows الخاص بك . لن يكون لهذا تأثير مرئي على مجموعة عمل Windows الخاصة بك ، والتي لا تزال تحتوي على نهايات CRLF ، ولكن عندما تضغط على جهاز التحكم عن بعد ، سيحصل جهاز التحكم عن بعد على LF بشكل صحيح.

لست متأكدا إذا كان هناك طريقة سهلة لمعرفة ما هي نهايات الأسطر الموجودة في مستودع ويندوز الخاص بك - أعتقد أنك تستطيع اختبار ذلك عن طريق تعيين core.autocrlf = false ومن ثم الاستنساخ (إذا كان الريبو له نهايات LF ، LF أيضا).


من أجل إعداد أي خادم Git مبدئيًا ، يجب عليك تصدير مستودع موجود إلى مستودع تخزين جديد - مستودع لا يحتوي على دليل عمل. هذا واضح بشكل عام. لاستنساخ المستودع الخاص بك لإنشاء مستودع تخزين جديد ، تقوم بتشغيل الأمر clone باستخدام الخيار --bare . بواسطة الاتفاقية ، تنتهي الدلائل مستودع تخزين في .git ، مثل:

$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/

يأخذ هذا الأمر مستودع Git بنفسه ، بدون دليل عمل ، ويخلق دليلا خاصا به وحده.

والآن بعد أن أصبح لديك نسخة خالية من المستودع الخاص بك ، كل ما عليك القيام به هو وضعه على الخادم وإعداد البروتوكولات الخاصة بك. لنفترض أنك أعددت خادمًا باسم git.example.com يكون لديك وصول SSH إليه ، وتريد تخزين جميع مستودعات Git الخاصة بك ضمن الدليل /opt/git . يمكنك إعداد المستودع الجديد الخاص بك عن طريق نسخ المستودع العاري على:

$ scp -r my_project.git [email protected]:/opt/git

عند هذه النقطة ، يمكن للمستخدمين الآخرين الذين لديهم وصول SSH إلى نفس الخادم الذي لديه حق الوصول للقراءة إلى دليل /opt/git السجل الخاص بك عن طريق تشغيل

$ git clone [email protected]:/opt/git/my_project.git

إذا كان المستخدم SSHs في الخادم ولديه حق الوصول للكتابة إلى /opt/git/my_project.git ، فسيكون لديهم أيضًا إمكانية الوصول إلى الدفع تلقائيًا. سيضيف Git تلقائيًا أذونات الكتابة للمجموعة إلى مستودع التخزين بشكل صحيح إذا قمت بتشغيل الأمر git init مع خيار المشاركة.

$ ssh [email protected]
$ cd /opt/git/my_project.git
$ git init --bare --shared

من السهل جدًا أخذ مستودع Git ، وإنشاء نسخة خالية ، ووضعه على خادم تمتلك أنت والمتعاونون لديك وصول SSH إليه. أنت الآن جاهز للتعاون في نفس المشروع.







installation