سؤال

هل هناك طريقة لاستخدام أمر مثل git ls-files لإظهار الملفات غير المقطوعة فقط؟

السبب في أنني أسأل هو أنني أستخدم الأمر التالي لمعالجة جميع الملفات المحذوفة:

git ls-files -d | xargs git rm

أرغب في شيء مشابه للملفات غير المقيدة:

git some-command --some-options | xargs git add

تمكنت من العثور على -o خيار ل git ls-files, ، لكن هذا ليس ما أريده لأنه يظهر أيضًا الملفات التي تم تجاهلها. تمكنت أيضًا من التوصل إلى الأمر الطويل والقبيح التالي:

git status --porcelain | grep '^??' | cut -c4- | xargs git add

يبدو أنه يجب أن يكون هناك أمر أفضل يمكنني استخدامه هنا. وإذا لم يكن هناك ، كيف يمكنني إنشاء أوامر GIT مخصصة؟

هل كانت مفيدة؟

المحلول

لسرد الملفات غير المقيدة جرب:

git ls-files --others --exclude-standard

إذا كنت بحاجة إلى تنشيط الإخراج إلى xargs, ، من الحكمة استخدام المساحات البيضاء git ls-files -z و xargs -0:

git ls-files -z -o --exclude-standard | xargs -0 git add

الاسم المستعار الجميل لإضافة ملفات غير معروفة:

au = !git add $(git ls-files -o --exclude-standard)

تعديل: كمرجع: ملفات GIT-LS

نصائح أخرى

إذا كنت ترغب فقط في إزالة الملفات غير المقيدة ، فقم بذلك:

git clean -df

يضيف x لذلك إذا كنت تريد أيضًا تضمين الملفات التي تم تجاهلها على وجه التحديد. أنا أستعمل git clean -dfx أ كثيرا خلال اليوم.

يمكنك إنشاء GIT مخصص بمجرد كتابة نص يسمى git-whatever ووجودها في طريقك.

git add -A -n ستفعل ما تريد. -A يضيف جميع الملفات غير المقلدة إلى الريبو ، -n يجعلها dry-run حيث لم يتم تنفيذ الإضافة ولكن يتم إعطاء إخراج الحالة في إدراج كل ملف سيكون قد أضيف.

تعطل الإجابة المقبولة على أسماء الملفات مع المساحة. أنا في هذه المرحلة لست متأكدًا من كيفية تحديث أمر الاسم المستعار ، لذلك سأضع الإصدار المحسن هنا:

git ls-files -z -o --exclude-standard | xargs -0 git add

كل شيء بسيط للغاية

للحصول على قائمة بجميع الملفات غير المقيدة استخدم الأمر حالة git مع اختيار -u (-ملفات غير محدودة)

git status -u

عند البحث عن الملفات لإضافة. الإخراج من git show هل هذا ولكنه يشمل أيضًا الكثير من الأشياء الأخرى. الأمر التالي مفيد للحصول على نفس قائمة الملفات ولكن بدون كل الأشياء الأخرى.

 git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'

يكون هذا مفيدًا عند دمجه في خط أنابيب للعثور على ملفات تطابق نمطًا معينًا ثم تنقذ ذلك git add.

git status --porcelain | grep "^?? "  | sed -e 's/^[?]* //' | \
egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add

أعلم أنه سؤال قديم ، ولكن فيما يتعلق بإدراج الملفات غير المعروفة ، اعتقدت أنني سأضيف مسارًا آخر يسرد أيضًا مجلدات غير متوفرة:

يمكنك استخدام عملية GIT Clean مع -n (تشغيل جاف) لتظهر لك الملفات التي ستزيلها (بما في ذلك ملفات .gitignore) بواسطة:

git clean -xdn

هذا له ميزة العرض كل الملفات و كل الملفات التي لم يتم تتبعها. المعلمات:

  • x - يظهر جميع الملفات غير المكشوفة (بما في ذلك تجاهلها GIT وغيرها ، مثل إخراج البناء وما إلى ذلك)
  • d - إظهار الدلائل غير المقيدة
  • n - وأكثر الأهم! - DRYRUN ، أي لا تحذف أي شيء فعليًا ، فقط استخدم الآلية النظيفة لعرض النتائج.

جميع الإجابات السابقة التي راجعت سرد الملفات المراد ارتكابها أيضًا. فيما يلي حل بسيط وسهل يسرد فقط الملفات التي لم يتم بعد .gitignore.

git status --porcelain | awk '/^\?\?/ { print $2; }'

أعتقد أن هذا سيؤدي إلى نفس الشيء المقصود من الملصق الأصلي:

git add .

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