أحد الأخطاء الشائعة عند العمل في مشروع Git تعاوني هو 'من غير المحتمل أن يكون لديك ملفات غير مدمجة'.
في هذا البرنامج التعليمي، سوف نتعلم ما هو هذا الخطأ، ولماذا يحدث، وكيف يمكننا حله.
ما هو هذا الخطأ؟
يحدث خطأ 'سحب git غير ممكن لأن لديك ملفات غير مدمجة' عندما يكون لديك تعارضات لم يتم حلها في مستودع Git المحلي. هذا يعني أن Git غير قادر على إجراء عملية 'سحب' حتى نقوم بإصلاح التغييرات المتعارضة.
لنفترض أن لديك مستودعًا عامًا ترغب في المساهمة فيه. يمكنك استنساخ المستودع على جهازك المحلي. بعد ذلك، قم بزيارة صفحة 'المشاكل'، واختر المشكلة التي ترغب في إصلاحها أو الميزة التي ترغب في إضافتها.
لنفترض أن مطورًا آخر على الطرف الآخر من العالم يحاول إصلاح نفس المشكلة التي تعمل على إصلاحها أو يحاول إضافة نفس الميزة التي تقوم أنت بإصلاحها. ومع ذلك، فإن هذا المطور يدفع التغييرات أمامك.
عندما تحاول سحب أحدث التغييرات من الريبو، لا يستطيع Git تحديد ما إذا كان سيتم استبدال تغييراتك أو التغييرات الأحدث من الريبو. هذا هو المكان الذي يفشل فيه السحب بسبب خطأ الملفات غير المدمجة.
كيفية حلها
هناك طرق مختلفة يمكنك استخدامها لحل هذا الخطأ. بعضها مدمر وسيقوم بإزالة جميع التغييرات التي أجريتها بالكامل واستبدالها بإصدار الريبو الجديد بينما يتضمن الآخر إصلاح الملفات المتعارضة.
الحل 1: تحديد الملفات المتعارضة
الخطوة الأولى قبل محاولة إصلاح أي مشكلة هي التعرف على الملفات التي تسبب التعارض.
يمكنك القيام بذلك عن طريق تشغيل الأمر 'git Status':
$ حالة بوابةيسرد Git الملفات التي بها تعارضات ضمن قسم 'المسارات غير المدمجة'.
الخطوة: حلها يدويًا
يمكنك بعد ذلك فتح الملفات المتعارضة باستخدام محرر نصوص أو أداة دمج مناسبة مثل Diff Merge لمقارنة التعارضات وإصلاحها يدويًا.
سترى علامات التعارض في الملف مثل <<<<<<< , ======= ، و >>>>>>> والتي تشير إلى الأقسام المتعارضة.
على سبيل المثال، قد يكون لديك تعارض يبدو كالتالي:
<<<<<<< رأسهذه هي التغييرات بلدي في الفرع الحالي
=======
تغيير متضارب في الفرع الوارد .
>>>>>>> فرع الواردمن هنا، يمكنك اختيار ما إذا كنت تريد الاحتفاظ بالتغييرات (قسم HEAD)، أو التغييرات الواردة (قسم الفرع الوارد)، أو نسخة معدلة تجمع بين الاثنين معًا.
بمجرد الانتهاء من ذلك، أضف التغييرات الجديدة غير المتعارضة، والتزم بها، وادفعها إلى الريبو عن بعد.
الحل 2: موصى به
تعتبر الخطوة التالية مناسبة جدًا لمجموعة واسعة من الحالات وتوفر أسلوبًا أكثر لطفًا ورشاقة لإصلاح المشكلات المتعارضة.
يتضمن ذلك ثلاث خطوات رئيسية:
الخطوة 1: التخلص من التغييرات الخاصة بك
الخطوة الأولى هي وضع التغييرات جانبًا. وهذا يعطي الريبو النظيف منذ التزامك الأخير. والشيء الجيد هو أن التغييرات الخاصة بك لا تختفي. وبدلاً من ذلك، يضعها Git جانبًا ويسمح لك باسترجاعها لاحقًا عند الضرورة.
يمكنك القيام بذلك عن طريق تشغيل الأمر 'git stash':
$ جيت مخبأيسمح لنا الأمر بحفظ التغييرات مؤقتًا في الدليل الحالي دون الالتزام بها فعليًا.
الخطوة 2: سحب أحدث التغييرات
بمجرد أن نضع تغييراتنا جانبًا، يمكننا المتابعة وسحب أحدث التغييرات من الريبو. قم بتشغيل الأمر 'git pull' التالي:
$ بوابة سحبالخطوة 3: تطبيق خبأ
أخيرًا، يمكننا تطبيق التغييرات المخفية مرة أخرى على دليل العمل باستخدام 'git stash Apply' أو 'git stash pop'.
$ جيت مخبأ يتقدميطبق الأمر 'git stash Apply' المخبأ ولكنه يبقيه في قائمة المخبأ.
$ جيت مخبأ موسيقى البوبيقوم الأمر 'git stash pop' بتطبيق المخبأ وإزالته من القائمة.
الحل 3: دع Git يعتني بالأمر
Git أقوى مما نعتقد. بدلًا من متابعة كل هذه الأمور يدويًا، يمكننا فقط السماح لـ Git بالاهتمام بالتغييرات المتعارضة باستخدام الأمر التالي:
$ بوابة سحب --autostashباستخدام هذا الأمر، يمكننا الحفاظ على التغييرات المحلية آمنة مع إبقاء الفرع محدثًا بالتغييرات عن بعد.
خاتمة
يستكشف هذا البرنامج التعليمي الخطأ 'git pull غير ممكن لأن لديك ملفات غير مدمجة' عند تشغيل أمر 'git pull'. لقد استكشفنا ما يعنيه ذلك، ولماذا يحدث، وكيفية حله.