new - كيفية إزالة الملفات المحلية(untracked) من شجرة العمل Git الحالية؟




git merge branch to master (20)

طريقة بسيطة لإزالة الملفات غير المتعقبة

لإزالة جميع الملفات غير القابلة للتتبع ، فإن الطريقة البسيطة هي إضافة جميع الملفات أولاً وإعادة تعيين الريبو على النحو التالي

git add --all
git reset --hard HEAD

كيف تقوم بحذف الملفات المحلية غير المتعرجة من شجرة العمل الحالية؟


تنظيف مستودع git وجميع القوائم بشكل متكرر

سيقوم الأمر التالي بتنظيف مخزن git الحالي وكافة عمليات ترحيله بشكل متكرر:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

كن حذرًا أثناء تشغيل أمر "git clean".

استخدم دائمًا -n قبل تشغيل الأمر الفعلي حيث سيعرض لك الملفات التي ستتم إزالتها.

git clean -n -d 
git clean -f -d

بشكل افتراضي ، ستقوم git clean بإزالة الملفات غير المتقطعة التي لا يتم تجاهلها. لن تتم إزالة أي ملف يطابق نمط في ملفك .gitignore أو ملفات تجاهل أخرى. إذا كنت تريد إزالة هذه الملفات أيضًا ، فيمكنك إضافة -x إلى الأمر clean.

git clean -f -d -x

هناك أيضًا وضع تفاعلي متاح -i باستخدام الأمر النظيفة

git clean -x -i

بدلا من ذلك

إذا لم تكن متأكدًا بنسبة 100٪ من أن حذف عملك غير المرتبط به آمن ، فيمكنك استخدام stashing بدلاً منه

git stash --all

سيؤدي أيضًا إلى مسح دليلك ولكن يمنحك المرونة لاسترداد الملفات في أي وقت من الأوقات باستخدام المخبأ مع التطبيق أو البوب . ثم في مرحلة لاحقة ، يمكنك مسح حسابك باستخدام:

git stash drop // or clean

uAdded القيادة لإزالة الملفات غير المدونة من git docs هو نظيف جدا

؛ git clean - إزالة الملفات غير المتقطعة من شجرة العمل

الطريقة المقترحة: الوضع التفاعلي باستخدام git clean -i حتى يمكننا التحكم فيه. دعونا نرى الخيارات المتاحة المتبقية.

الخيارات المتاحة:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

تفسير:

1.

قم بإزالة دلائل untracked بالإضافة إلى الملفات untracked. إذا تم إدارة دليل untracked بواسطة مستودع Git آخر ، فلن تتم إزالته بشكل افتراضي. استخدم الخيار -f مرتين إذا كنت تريد بالفعل إزالة مثل هذا الدليل.

2. -f ، - force

إذا لم يتم تعيين متغير تهيئة Git clean.requireForce إلى false ، فإن git clean سيرفض تشغيله ما لم يعطى -f أو -n أو -i.

3. -i ، - التفاعلية

أظهر ما يمكن عمله وتنظيف الملفات بشكل تفاعلي. انظر "الوضع التفاعلي" للحصول على التفاصيل.

4. -n ، - جري المدى

لا تزيل أي شيء فعليًا ، ما عليك سوى إظهار ما يمكن فعله.

5. -q ، -quiet

كن هادئًا ، أبلغ عن الأخطاء فقط ، ولكن ليس الملفات التي تمت إزالتها بنجاح.

6. -e ، - exclude =

بالإضافة إلى تلك الموجودة في .gitignore (لكل دليل) و $ GIT_DIR / info / exclude ، فكر أيضًا في أن تكون هذه الأنماط في مجموعة قواعد التجاهل السارية.

7. -x

لا تستخدم القواعد القياسية لتجاهل القواعد من .gitignore (لكل دليل) و $ GIT_DIR / info / exclude ، ولكن لا تزال تستخدم قواعد التجاهل المعطاة بخيارات -e. يسمح ذلك بإزالة جميع الملفات غير المتحرّكة ، بما في ذلك إنشاء المنتجات. يمكن استخدام هذا (ربما بالاقتران مع git reset) لإنشاء دليل عمل أصلي لاختبار بنية نظيفة.

8. -X

إزالة فقط الملفات تجاهلها Git. قد يكون هذا مفيدًا لإعادة إنشاء كل شيء من البداية ، ولكن مع الاحتفاظ بالملفات التي تم إنشاؤها يدويًا.


أنا مندهش لم يذكر أحد من قبل:

git clean -i

هذا يعني التفاعلي وستحصل على نظرة عامة سريعة على ما سيتم حذفه مما يتيح لك إمكانية تضمين / استبعاد الملفات المتأثرة. وعموما ، لا يزال أسرع من تشغيل الإلزامي --dry-run قبل التنظيف الحقيقي.

سوف تضطر إلى إرم في د -d إذا كنت تريد أيضا رعاية المجلدات الفارغة. في النهاية ، يجعله اسمًا مستعارًا لطيفًا:

git iclean

ومع ذلك ، يمكن أن يكون الإمساك اليدوي الإضافي للأوامر التفاعلية متعبًا للمستخدمين ذوي الخبرة. في هذه الأيام أنا فقط استخدام git clean -fd المذكورة بالفعل


إذا كان الدليل غير المتتبع هو مستودع git خاص به (على سبيل المثال ، submodule) ، فستحتاج إلى استخدام -f مرتين:

git clean -d -f -f


إذا لزم الأمر لإزالة الملفات غير المتقطعة من دليل فرعي معين ،

git clean -f {dir_path}

وطريقة مشتركة لحذف dir / الملفات غير المتتبعة والملفات المتجاهلة.

git clean -fxd {dir_path}

بعد هذا سيكون لديك ملفات معدلة فقط في git status .


استخدم git clean -f -d للتأكد من إزالة الدلائل أيضًا.

يمكنك بعد ذلك التحقق مما إذا كانت ملفاتك قد اختفت مع git status .


حسب Git Documentation git نظيف

قم بإزالة الملفات غير المتقطعة من شجرة العمل

الخطوة 1 هي إظهار ما سيتم حذفه باستخدام الخيار -n :

git clean -n

خطوة نظيفة - حذار: سيؤدي ذلك إلى حذف الملفات :

git clean -f
  • لإزالة الدلائل ، قم بتشغيل git clean -f -d أو git clean -fd
  • لإزالة الملفات التي تم تجاهلها ، قم بتشغيل git clean -f -X أو git clean -fX
  • لإزالة الملفات المتجاهلة وغير المتجاهلة ، قم بتشغيل git clean -f -x أو git clean -fx

لاحظ اختلاف الحالة على X للأوامر الأخيرة اثنين.

إذا تم تعيين clean.requireForce على "true" (الافتراضي) في التكوين الخاص بك ، يحتاج المرء إلى تحديد -f وإلا لن يحدث أي شيء بالفعل.

مرة أخرى ، راجع مستندات git-clean للحصول على مزيد من المعلومات.

خيارات

-F

--فرض

إذا لم يتم تعيين متغير تهيئة Git clean.requireForce إلى false ، فإن git clean سيرفض تشغيله ما لم يعطى -f أو -n أو -i.

-x

لا تستخدم القواعد القياسية لتجاهل القواعد من .gitignore (لكل دليل) و $ GIT_DIR / info / exclude ، ولكن لا تزال تستخدم قواعد التجاهل المعطاة بخيارات -e. يسمح ذلك بإزالة جميع الملفات غير المتحرّكة ، بما في ذلك إنشاء المنتجات. يمكن استخدام هذا (ربما بالاقتران مع git reset) لإنشاء دليل عمل أصلي لاختبار بنية نظيفة.

-X

إزالة فقط الملفات تجاهلها Git. قد يكون هذا مفيدًا لإعادة إنشاء كل شيء من البداية ، ولكن مع الاحتفاظ بالملفات التي تم إنشاؤها يدويًا.

-n

--ركض جاف

لا تزيل أي شيء فعليًا ، ما عليك سوى إظهار ما يمكن فعله.

قم بإزالة دلائل untracked بالإضافة إلى الملفات untracked. إذا تم إدارة دليل untracked بواسطة مستودع Git آخر ، فلن تتم إزالته بشكل افتراضي. استخدم الخيار -f مرتين إذا كنت تريد بالفعل إزالة مثل هذا الدليل.


سيرة ذاتية لمثل هذا الموقف اخترعت وحاولت للتو (يعمل بشكل مثالي):

git add .
git reset --hard HEAD

حذار! تأكد من ارتكاب أي تغييرات مطلوبة (حتى في الملفات التي لا يتم تتبعها) قبل إجراء ذلك .


لإزالة الملفات غير القابلة للتتبع ، يجب أولاً استخدام الأمر لعرض الملفات التي ستتأثر بالتنظيف

git clean -fdn

سيعرض لك هذا قائمة الملفات التي سيتم حذفها. الآن لحذف تلك الملفات فعليًا استخدم هذا الأمر:

git clean -fd

لا يقوم الأمر git clean العادي بإزالة الملفات غير git version 2.9.0.windows.1 .

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!

هذا ما استخدمه دائمًا:

git clean -fdx

بالنسبة لمشروع كبير جدًا ، قد تحتاج إلى تشغيله عدة مرات.


يمكننا إزالة الملفات المحلية غير القابلة للتتبع بسهولة من شجرة العمل git الحالية باستخدام التعليقات أدناه git.

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

مثال:

git reset --hard HEAD

الروابط:

  1. https://git-scm.com/docs/git-reset
  2. كيف يمكنني استخدام "git reset --hard HEAD" للعودة إلى التزام سابق؟
  3. إعادة تعيين فرع المستودع المحلي ليكون فقط مثل مستودع التخزين عن بُعد HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

git-clean هو ما تبحث عنه. يتم استخدامه لإزالة الملفات untracked من شجرة العمل.


git clean -f -d -x $(git rev-parse --show-cdup) ينطبق على الدليل الجذر ، بغض النظر عن المكان الذي تتصل به داخل شجرة دليل مستودع التخزين. أستخدمه طوال الوقت لأنه لا يجبرك على ترك المجلد الذي تعمل فيه الآن ويسمح لك بالتنظيف والالتزام من المكان الذي أنت فيه.

تأكد من أن الأعلام -f و -d و -x تطابق احتياجاتك:

-d
       Remove untracked directories in addition to untracked files. If an
       untracked directory is managed by a different Git repository, it is
       not removed by default. Use -f option twice if you really want to
       remove such a directory.

-f, --force
       If the Git configuration variable clean.requireForce is not set to
       false, git clean will refuse to delete files or directories unless
       given -f, -n or -i. Git will refuse to delete directories with .git
       sub directory or file unless a second -f is given. This affects
       also git submodules where the storage area of the removed submodule
       under .git/modules/ is not removed until -f is given twice.

-x
       Don't use the standard ignore rules read from .gitignore (per
       directory) and $GIT_DIR/info/exclude, but do still use the ignore
       rules given with -e options. This allows removing all untracked
       files, including build products. This can be used (possibly in
       conjunction with git reset) to create a pristine working directory
       to test a clean build.

هناك غيرها من الأعلام المتاحة كذلك ، مجرد مراجعة git clean --help .


git clean -fd يزيل الدليل

git clean -fX يزيل الملفات المهملة

git clean -fx يزيل الملفات المتجاهلة وغير المتجاهلة

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

git clean -fdXx

تحقق دليل جيت لمزيد من المساعدة


النهج التفاعلي للمستخدم:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y

-i للتفاعلية
لو للقوة
-د للدليل
-x للملفات المتجاهلة (أضفها إذا لزم الأمر)

ملاحظة: قم بإضافة -n أو - dry-run لمجرد التحقق مما ستفعله.


قم بإزالة كافة المجلدات والملفات الإضافية الموجودة في هذه الوحدات الفرعية repo +

هذا يحصل لك في نفس الحالة مثل استنساخ جديد.

git clean -ffdx

قم بإزالة كافة المجلدات والملفات الإضافية الموجودة في هذا repo ولكن لا توجد به الوحدات الفرعية

git clean -fdx

إزالة مجلدات إضافية فقط وليس الملفات (مثل مجلد الإنشاء)

git clean -fd

إزالة مجلدات إضافية + ملفات تم تجاهلها (ولكن ليس الملفات المضافة حديثًا)

إذا لم يتم تجاهل الملف ولم يتم تسجيله بعد ، فسيبقى. لاحظ رأس المال X.

git clean -fdX

الوضع التفاعلي الجديد

git clean

يوفر oh-my-zsh مع zsh تلك الأسماء المستعارة الرائعة عبر المكون الإضافي git. يمكن استخدامها في باش كذلك.

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean يزيل الدلائل غير gclean بالإضافة إلى الملفات untracked .
  • gpristine الثابت إعادة تعيين التغييرات المحلية ، وإزالة الدلائل غير قابل للتتبع ، وملفات untracked ولا تستخدم قواعد تجاهل القياسية قراءة من .gitignore (لكل دليل) و $ GIT_DIR / info / exclude ، ولكن لا تزال تستخدم قواعد تجاهل مع خيارات -e . يسمح ذلك بإزالة جميع الملفات غير المتحرّكة ، بما في ذلك إنشاء المنتجات. يمكن استخدام هذا (ربما بالاقتران مع git reset) لإنشاء دليل عمل أصلي لاختبار بنية نظيفة .




git-branch