הסרת קבצים שאינם במעקב
עץ עבודה אוסף קבצים ש־git מעולם לא לקח מהם עותק: פתק זמני, debug-output.txt,
תיקיית dist/ מבנייה שנכשלה, node_modules מענף שנטשתם בחודש שעבר. ל־git יש
פקודה אחת לזה — git clean — והיא פעולת ה־git היחידה שאין שום דבר מאחוריה.
התוכן מעולם לא היה בקומיט, ולכן אין רשומת reflog, אין סטאש, אין ביטול, ואין שום
לחש git שמחזיר אותו.
זו הסיבה שזו הפעולה שאנשים מריצים בטרמינל ואז מתחרטים. הגרסה של Gitcito מציגה את כל הרשימה לפני שקורה משהו.
⌘K ← הסרת קבצים שאינם במעקב.

מה הרשימה אומרת
כל רשומה היא נתיב ש־git clean יכול להגיע אליו, עם גודלו בדיסק, בשתי קבוצות:
| קבוצה | מה זה | נבחר כברירת מחדל |
|---|---|---|
| אינם במעקב | מעולם לא נכנסו לקומיט, לא נתפסים על ידי .gitignore |
כן |
| מוחרגים | נתפסים על ידי .gitignore — פלט בנייה, מטמונים, .env |
לא |
הפיצול הוא כל הפואנטה. נתיבים מוחרגים הם בדרך כלל חסרי ערך, ומדי פעם הם העותק
היחיד של משהו שחשוב: .env מקומי, דאמפ של מסד נתונים, פיקסצ׳ר שהורדתם. שום דבר
שתואם ל־.gitignore לא נבחר בשבילכם.
תיקייה שכולה מחוץ למעקב היא שורה אחת, ולא שורה לכל קובץ — tmp/, dist/,
node_modules/ — כי זו רמת הפירוט שבה git מסיר אותן, ורשימה של 40,000 קבצים היא
רשימה שאף אחד לא קורא. גודלה הוא סכום מה שהיא מחזיקה.
תיקייה המסומנת כמאגר משל עצמו מחזיקה .git משלה: שכפול שהפלתם לתוך זה, או
ניסוי שמעולם לא חיברתם. git מסרב להסיר כאלה (הוא דורש -ff, דגל ש־Gitcito אינו
מציע) — האשפה לוקחת אותן.
אשפה או מחיקה
העברה לאשפה מופעלת כברירת מחדל, ואינה עוברת דרך git בכלל: הנתיבים הולכים לאשפה של המערכת שלכם, ומשם אפשר להחזיר אותם. זה המסלול היחיד שמסיר מאגר מקונן, והיחיד ששורד תיבת סימון שגויה.
כיבוי שלה הוא git clean -f -d -x אמיתי על בדיוק הנתיבים שנבחרו, והוא מבקש
אישור כשהמונה והגודל הכולל מולכם. שום דבר לא מתאושש מזה.
מגבלות ששווה להכיר
- רק קבצים שאינם במעקב. קובץ במעקב ששונה אינו כאן — זו זריקה, שמשחזרת אותו מהאינדקס או מ־HEAD.
- הרשימה חסומה ב־400 הנתיבים הראשונים. אם במאגר יש יותר, הסירו את מה שרשום ולחצו סריקה מחדש לשאר.
- גדלי תיקיות הם קירוב בעצים גדולים מאוד: הסריקה נעצרת אחרי 20,000 קבצים,
ולכן
node_modulesענקית עלולה להיקרא קטנה ממה שהיא. היא לעולם לא נקראת גדולה יותר. - הסריקה היא תמונת רגע. אם בנייה כותבת קבצים בזמן שהחלון פתוח, לחצו סריקה מחדש לפני שאתם מסירים משהו.
- הנתיבים נבדקים מול הרשימה של git עצמו של קבצים ניתנים להסרה לפני שנוגעים במשהו, ולכן שום דבר שנמצא במעקב לא יכול להיות מוסר דרך החלון הזה, גם לא לפי שם.
ראו גם: העלאה לסטייג׳ וזריקה · החרגת קבצים · הסרת קובץ מההיסטוריה