تخطَّ إلى المحتوى

٨ يوليو ٢٠٢٦

حل خطأ fatal: not a git repository بالعربي

شارك المقال:

تكتب git status أو git add . فيصفعك Git بالرسالة الشهيرة:

fatal: not a git repository (or any of the parent directories): .git

هذا أكثر أخطاء Git شيوعًا للمبتدئين — ومعناه بسيط جدًا بمجرد أن تفهم كيف يفكّر Git.

كيف يفكّر Git: مجلد .git هو المستودع

كل مستودع Git هو ببساطة مجلد عادي يحتوي مجلدًا مخفيًّا اسمه .git — فيه كل التاريخ والفروع والإعدادات. عندما تشغّل أي أمر Git، يبحث عن .git في:

  1. المجلد الحالي.
  2. ثم المجلد الأب، ثم أبيه… حتى جذر القرص.

إذا لم يجده في أيٍّ منها → fatal: not a git repository. الرسالة إذًا لا تقول "شيء مكسور"، بل تقول: "أنت واقف في المكان الخطأ، أو لا يوجد مستودع أصلًا".

التشخيص في 10 ثوانٍ

pwd        # أين أنا الآن؟ (cd على ويندوز)
ls -a      # هل يوجد مجلد .git هنا؟ (dir /a على ويندوز)

الأسباب الأربعة وحلولها

1) أنت في المجلد الخطأ (السبب الأول)

فتحت طرفية جديدة فبدأت في مجلد المستخدم بدل مجلد المشروع:

cd path/to/my-project   # انتقل إلى مجلد مشروعك
git status              # ✅ يعمل الآن

💡 في VS Code افتح الطرفية بـ Ctrl+` — تُفتح دائمًا في مجلد المشروع الحالي.

2) المشروع لم يُهيَّأ كمستودع بعد

مجلد جديد أنشأته بنفسك لا يصبح مستودعًا تلقائيًّا:

cd my-project
git init                # ينشئ مجلد .git — المشروع صار مستودعًا
git add .
git commit -m "أول commit"

3) تريد مشروعًا موجودًا على GitHub

لا تنشئ مجلدًا فارغًا ثم تحتار — الاستنساخ يجهّز كل شيء:

git clone https://github.com/user/repo.git
cd repo                 # ⚠️ لا تنسَ الدخول للمجلد بعد الاستنساخ!

نسيان cd repo بعد الاستنساخ سبب كلاسيكي لهذا الخطأ.

4) مجلد .git حُذف أو تلف

إذا كان المشروع يعمل سابقًا وتوقّف فجأة، تحقق:

ls -a                   # هل اختفى .git؟
  • إذا كان المشروع على GitHub: أسهل حل هو استنساخه من جديد.
  • إذا كان محليًّا فقط: git init يبدأ تاريخًا جديدًا (التاريخ القديم ضاع مع .git المحذوف — وهذا درس في أهمية الرفع إلى remote).

قائمة تحقّق سريعة

  • pwd — هل أنا فعلًا داخل مجلد المشروع؟
  • ls -a — هل يوجد .git هنا أو في مجلد أعلى؟
  • هل نسيت cd بعد git clone؟
  • هل هذا مشروع جديد يحتاج git init لمرة واحدة؟

الخلاصة

fatal: not a git repository = "لا يوجد مجلد .git من هنا حتى جذر القرص". تسعون بالمئة من الحالات تُحل بـ cd إلى المجلد الصحيح، والباقي بـ git init لمشروع جديد أو git clone لمشروع موجود.

أتقن الأساسات في مسار Git الكامل بالعربي، وتعرّف على الفرق بين Git و GitHub، وإذا قابلت تعارضات الدمج فراجع حل Merge Conflict خطوة بخطوة.

📚 مصادر رسمية للتعمّق: التوثيق الرسمي لـ Git

الأسئلة الشائعة

ما معنى or any of the parent directories في الرسالة؟

Git لا يبحث عن مجلد .git في مجلدك الحالي فقط، بل يصعد للمجلدات الأعلى واحدًا واحدًا حتى جذر القرص. الرسالة تعني أنه لم يجد .git في أي منها — أنت خارج أي مستودع تمامًا.

هل أشغّل git init في أي مجلد لحل المشكلة؟

لا. شغّل git init فقط في جذر مشروعك الذي تريد تتبّعه فعلًا. تشغيله في مجلد عام مثل Desktop أو المستخدم يجعل Git يتتبّع آلاف الملفات غير المقصودة ويسبب فوضى لاحقًا.

كنت أعمل في المشروع أمس والخطأ ظهر اليوم — لماذا؟

غالبًا فتحت الطرفية في مجلد مختلف عن أمس، أو حُذف مجلد .git المخفي (يدويًا أو ببرنامج تنظيف). تحقق بأمر ls -a من وجود .git في جذر المشروع.

اقرأ أيضًا

تصفّح كل المقالات في المدوّنة، أو ابدأ التعلّم من المسارات و خرائط الطريق.