مشكلة: Git Pull لا يسحب التغييرات الخارجية (بعد التعديل المباشر في المستودع عبر Claude code)

وصف المشكلة/الخطأ/السؤال

لدينا نسخة احترافية، سير العمل موجود في git في الفرع الرئيسي. أجريت بعض التغييرات الخارجية على الفرع عبر كود Claude والآن أحاول إدخالها إلى مثيل n8n staging لدينا.
ضغطت على pull لكنها تقول “No workflow changes to pull from Git”.

ما هي رسالة الخطأ (إن وجدت)؟

“No workflow changes to pull from Git”

معلومات عن إعداد n8n الخاص بك

  • إصدار n8n: 2.32.7
  • قاعدة البيانات (الافتراضي: SQLite): Postgres
  • إعداد n8n EXECUTIONS_PROCESS (الافتراضي: own, main): queue / worker
  • تشغيل n8n عبر (Docker, npm, n8n cloud, desktop app): docker
  • نظام التشغيل: Ubuntu

هل لديك أي أفكار حول كيفية تصحيح ذلك بشكل أكبر؟

مرحباً @alexm، بينما تنتظر الرد، إليك بعض الأشياء التي قد تساعدك:

الموارد المقترحة

تم المطابقة تلقائياً مع سؤالك.

المستندات:

المنتدى:

@jabbson - لقد ساعدت في حل مشاكل مماثلة من قبل، هل يمكنك إلقاء نظرة؟

تم اقتراحه تلقائياً بواسطة بوت المجتمع في n8n. إنه برنامج تجريبي - يرجى مشاركة ملاحظاتك هنا.

مرحبًا @alexm

يحدث خطأ “No workflow changes to pull from Git” لأن n8n يتوقع هيكل ملفات محدد جدًا وتنسيقًا دقيقًا واتفاقية تسمية نادرًا ما تُنشئها أدوات خارجية مثل Claude Code بشكل صحيح افتراضيًا. إذا انحرفت ملفاتك حتى قليلًا عما يتوقعه Source Control في n8n، فسيتجاهل n8n تمامًا أثناء عملية السحب.

لإصلاح هذه المشكلة، تابع قائمة التحقق التالية للتأكد من أن تغييرات Git الخاصة بك تطابق متطلبات n8n.

  1. التحقق من هيكل الملفات والتسمية:

يبحث n8n عن سير العمل في دليل محدد في جذر مستودع Git الخاص بك.

  • موقع المجلد: يجب وضع سير العمل داخل مجلد باسم workflows/ تمامًا في جذر مستودع Git الخاص بك.
  • تسمية الملفات: يجب تسمية الملف باستخدام معرّف فريد له متبوعًا بامتداد .json (على سبيل المثال، workflows/12345.json أو workflows/aBc12D3e.json).
  1. مخطط JSON: إذا عدّل Claude Code JSON سير العمل، فقد يكون قد أدخل تغييرات في المخطط يرفضها n8n أو لا يعترف بها.

تأكد من وجود id وname وnodes وconnections على مستوى الجذر من JSON. إذا قام Claude بتغليف الكود داخل كتلة إضافية أو فقد حقل id، فسيفشل n8n في قراءته.

  1. مطابقة إعدادات الدليل الفرعي:

إذا قمت بتكوين دليل فرعي مخصص في إعدادات Source Control الخاصة بـ n8n (على سبيل المثال، n8n-config/)، يجب أن يكون سير العمل داخل <your-custom-folder>/workflows/. تأكد من تكوين بيئة التقديم المستهدفة لتقرأ من الدليل الفرعي الدقيق حيث قام Claude Code بدفع التغييرات.

مرحبا @alexm

إذا كانت نسختك من n8n مكونة للسحب من main، لكن تغييرات Claude Code الخاصة بك موجودة على فرع مختلف (على سبيل المثال، feature-branch)، فسيتحقق n8n من main، ويرى أن main لم يتغير، وسيرفع تقريرا بأنه لا يوجد شيء لسحبه.

كيفية تصحيح الأخطاء:

  • تحقق من إعدادات Git في n8n: انتقل إلى إعدادات n8n الخاصة بك وتحقق من الفرع المحدد في إعدادات Git.
  • تحقق من الأصل البعيد: تحقق من مزود Git الخاص بك (GitHub/GitLab) لترى ما إذا كانت التغييرات موجودة على الفرع الذي يراقبه n8n.
  • الحل: ربما تحتاج إلى دمج فرعك في main (أو أي فرع يتابعه n8n) قبل أن يتمكن n8n من “رؤيتها” عبر أمر Pull.

نظرا لأنك تقوم بتشغيل n8n عبر Docker، فإن وصول n8n إلى مستودع Git يعتمد بالكامل على كيفية تثبيت مجلداتك.

كيفية تصحيح الأخطاء:

  • تحقق من docker-compose.yml أو أمر docker run: تأكد من أن المجلد الذي يحتوي على مستودع Git الخاص بك مثبت بشكل صحيح كمجلد في حاوية n8n.
  • تحقق داخل الحاوية: قم بتشغيل هذا الأمر لترى ما تراه حاوية n8n بالفعل:
docker exec -it <n8n-container-name> ls -la /path/to/your/git/repo

(استبدل /path/to/your/git/repo بالمسار داخل الحاوية حيث يتم تخزين مسارات العمل الخاصة بك).

  • تحقق من حالة Git داخل Docker:
docker exec -it <n8n-container-name> git -C /path/to/your/git/repo log -n 5

إذا لم تظهر السجلات داخل الحاوية التزاماتك الأخيرة، فهذا يعني أن n8n ينظر إلى نسخة مختلفة من الملفات أو مجلد مختلف تماما.

مرحباً @alexm,

من المحتمل أنك تحتاج إلى دفع التغييرات المحلية إلى Git قبل السحب.

دعنا أولاً نتحقق من أن فرع المسار البعيد يحتوي على الالتزامات الجديدة (من الحاوية، إذا لم يظهر شيء فإن الالتزامات الخاصة بك لا تتوجد في فرع المسار البعيد):
git fetch origin
git log --oneline HEAD..origin/main

تحقق من الالتزام الذي يعمل عليه n8n حالياً (إذا كانت التجزئات متطابقة فإن n8n في أحدث التزام):
git rev-parse HEAD
git rev-parse origin/main

فحص حالة المستودع (إذا كانت هناك تغييرات محلية قد يتجنب n8n السحب التلقائي)
git status
git branch -vv
git remote -v

تأكد من أن كود Claude تم دفعه إلى الفرع الحالي

انظر إلى سجلات n8n أثناء السحب:
docker logs -f <n8n-container>
أو إذا كنت تستخدم docker compose:
docker compose logs -f n8n

شكراً

شكراً على جميع إجاباتك.

الفرع هو نفسه .. main في كل مكان

تحققت من الحاوية عبر git log - التغييرات وصلت لكن لم تنعكس على العقدة.

كود Claude أيضاً لم يدمر البنية - خاصة كنت أتوقع رسالة خطأ وليس فقط “لا توجد تغييرات”. ما لم يفعله Claude هو تحديث معرّف إصدار سير العمل.

عدلت versionId والآن يعمل.

شكراً لإخبارك إيانا بهذا، لقد أنشأنا LIGO-950 كتذكرة تطوير داخلية للنظر فيها.