
غالبًا ما يحدث أن يقوم المطور بمرور الوقت بتجميع مجموعة من التعليمات البرمجية التي يستخدمها في مشاريعه.
يستخدم بعض النصوص في بعض المشاريع ، والبعض الآخر في البعض الآخر.
يتم تحسين هذه البرامج النصية بمرور الوقت ، وتتم إزالة الأخطاء وتحسينها. لذلك ، يطرح السؤال حول
كيفية مزامنة الإصدارات الجديدة من البرامج النصية مع تلك الموجودة في المشاريع .
هناك عدة خيارات:
الخيار الأول:قم بإنشاء مستودع واحد ووضع جميع البرامج النصية هناك. ثم يتم توصيل هذا المستودع كقاعدة فرعية للمشروع واستخدامها.
السلبيات:
- يتم نسخ جميع النصوص ، بما في ذلك النصوص غير الضرورية ، إلى المشروع.
- الوحدة الفرعية غير ملتزمة بمستودع المشروع ، لذلك إذا كان المستودع البعيد للوحدة الفرعية غير متاح ، فلن نتمكن من تنزيل المشروع بأكمله.
الخيار الثاني:يجب تخزين كل برنامج نصي بشكل منفصل على Github gist وربطه حسب الحاجة كقطع فرعية
ناقص هو نفسه كما في الإصدار الأول في الفقرة الثانية.
الخيار الثالث:استخدم
الشجرة الفرعية Git.(هذا الحل هو بديل عن وحدات Git الفرعية)
الشجرة الفرعية لـ Git هي طريقة أخرى لدمج الفروع. فكرته هي أن وجود فرعين ، سوف يفهم git أن أحد الفروع ليس اختلافًا عن الآخر ، ولكنه إضافة.
الفكرة العامة:
- - إضافة الملف إلى Github gist (يتم إنشاء مستودع صغير)
- - ربط المستودع الصغير بمشروعنا كفرع منفصل
- - تخصيص مجلد لهذا الفرع
- - فرغ.
- - ثم نعمل مع الفرع العادي (الدمج ، الالتزام ، الجلب ...)
الآن التفاصيل باستخدام ملحقات Git.
1) ننشر ملفنا باستخدام الرمز على
https://gist.github.com حيث يمكننا على الفور الحصول على رابط إلى المستودع "المصغر":

افتح مستودع مشروعنا في GitExtensions وحدد:
[المستودع] -> [المستودعات البعيدة ...]
نحن نربط كفرع منفصل.
للقيام بذلك ، اضغط
[+] . أدخل
[الاسم] و
[Url] واحفظ
[حفظ التغييرات] :
$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git"

نرى أننا متصلون بالمستودع البعيد.
بعد ذلك ، نحتاج إلى ربط هذا الفرع بمجلد معين في مشروعنا بحيث يتم نسخ الملف هناك.
للقيام بذلك ، افتح Git-bash (ctrl + G) ونفذ الأمر:
$git read-tree --prefix=Client/Assets/ -u Util1/master
حيث:
العميل / الأصول / - المسار إلى المجلد الذي سيتم نسخ الملف إليه
Util1 / master - اسم فرع المستودع البعيد
(لم أجد طريقة من خلال واجهة المستخدم)
يصبح فرع gist مرفقًا بمجلدنا في المشروع. والملف موجود بالفعل.
الآن يمكننا العمل كما هو الحال مع فرع منتظم.على سبيل المثال ، إذا تغير ملف في Gist ، فيمكننا الحصول على إصدار جديد:
نقوم
بإحضار الكل ونرى جميع التغييرات:
$git fetch --progress "--all"
ثم نندمج لملء التغييرات في فرعنا:
$git merge -s subtree --no-ff --allow-unrelated-histories Util1/master

النتيجة:
معلومات اضافية:https://git-scm.com/book/en/v1/Tools-Git-Merging-treeshttps://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtreehttps://www.nwcadence.com/blog/git-subtrees