سؤال

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

أصدرت ما يلي:

git remote update
git checkout HEAD
git pull origin HEAD

حذف كل الملفات التي يجب أن يكون لها، ولكن ليس الدلائل التي كانت فيها الملفات.

سؤالين:

  1. لماذا لم تزيل الدلائل؟
  2. هل هناك أمر جيت يمكنني إصداره في الحالة الحالية لإزالتها؟
هل كانت مفيدة؟

المحلول

لا تتبع GIT الدلائل، لذلك لن يقوم بإزالة تلك التي تصبح فارغة نتيجة دمج أو تغيير آخر. ومع ذلك، يمكنك استخدام git clean -fd لإزالة الدلائل غير المتناثرة ( -fd علم يعني Fإزالة ORCE من الملفات غير المتناثرة و دrichecties).

نصائح أخرى

كجزء من معظم العمليات التي تغير شجرة العمل (سحب، دمج، الخروج، وما إلى ذلك) سيقوم GIT بإزالة أي دلائل يتم إجراؤها فارغة بواسطة هذه العملية (أي جيت إزالة الملف الأخير).

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

git لا تتبع الدلائل والملفات (مع مسارها). git يخلق جميع الدلائل لتلك المسارات إذا لم تكن موجودة بعد (بارد!)، ولكنها تفعل ليس حذفها إذا تم نقل جميع الملفات الموجودة في المسار أو حذفها (وليس باردا ☹ ... ولكن هناك أسباب).

المحلول (بمجرد سحبها / إعادة توجيه / دمج سريع):

git stash --include-untracked
git clean -fd
git stash pop

إذا لم تفعل ذلك stash قبل clean, ، سوف تفقد كل ملفاتك غير المستخدمة (لا رجعة فيها).

ملاحظة: نظرا لأن هذا ينظف جميع الملفات التي تجاهلها أيضا، فقد تحتاج إلى تشغيل بعض البرامج النصية الخاصة بك مرة أخرى لإعادة تعيين بيانات التعريف (EX: ./gradlew eclipse). يقوم هذا أيضا بحذف الدلائل الفارغة والذي لم يكن جزءا من مسارات ملفات GIT.

بوابة لا تتبع الدلائل حاليا (انظر جيت ويكي), هذا هو أنه لا يمكنك إضافة أدلة فارغة أو سوف GIT إزالة الدلائل التي تنتهي فارغة. (تعديل: شكرا يا ماني، كنت مخطئا! لا يمكنك يضيف الدلائل الفارغة، ولكن سوف git إزالة الدلائل التي تصبح فارغة بسبب حذف محتواها المتعقبة.)

بالنسبة للأمر لإزالة الدلائل الفارغة: هذا يعتمد على نظام التشغيل الخاص بك.

لنظام التشغيل Linux يمكنك استخدامه، على سبيل المثال،

find -depth -type d -empty -exec rmdir {} \;

ومع ذلك، فإن هذا سوف يزيل الكل الدلائل الفارغة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top