בודק Gitignore
הדבק את כללי ה-.gitignore שלך ורשימת נתיבי קבצים כדי לראות בדיוק מאילו קבצים מתעלמים, לפי איזה כלל ושורה מדויקים, ואילו כללי שלילה מתים בשקט מכיוון שכבר התעלמו מספריית אב.
תוצאה
"למה שלילת ה-.gitignore שלי לא עובדת?" היא אחת משאלות ה-git הנפוצות ביותר שיש, והתשובה הכנה היא כמעט תמיד זהה: `!pattern` שמנסה לכלול מחדש קובץ בתוך ספרייה שכלל קודם כבר מוציא מהכלל יכול לעולם לא לעבוד, מכיוון ש-git לא יורד לתוך ספריות שמתעלמות ממנה כדי לבדוק שוב כל דבר בתוכם. הכלי הזה מיישם מחדש את אלגוריתם התאמת ה-.gitignore האמיתי של git - לא קירוב - במיוחד כדי שיוכל לתפוס ולהסביר את המצב המדויק הזה, יחד עם כל כלל דפוס אחר ש-git תומך בו.
הדבק את חוקי ה-.gitignore שלך בתיבה אחת ורשימת נתיבי קבצים (אחד בכל שורה, כמו `dist/index.js`, `node_modules/foo/bar.js`, או `.env`) בתיבה השנייה, והכלי מעריך כל נתיב בדיוק כמו ש-git היה עושה: הערות ושורות ריקות מדלגות, אלא אם פוסלים רווחים מובילים, a! `/` מעגן אותו לשורש במקום לתת לו להתאים בכל עומק, `/` נגרר מגביל אותו לספריות, ו-`*`, `?`, `[abc]` מחלקות תווים ו-`**` (התאמה על פני גבולות ספריות) כולם פועלים לפי כללי הגלוב המתועדים.
באופן קריטי, נתיבים נבדקים ספרייה אחר ספריה מהשורש למטה, באותה הדרך שבה פועל מנוע ההתעלמות של git עצמו - לא על ידי בדיקת הנתיב המלא מול כל כלל בנפרד. זה מה שמאפשר לזהות נכון את מקרה השלילה המתה: אם מתעלמים מ- `dist/` בשורה 3 ומאוחר `!dist/keep.js` מנסה להציל קובץ אחד בתוכו, הכלי הזה מדווח על `dist/keep.js` כעדיין מתעלם, שם את הכלל של line-3 כסיבה, ומסמן בנפרד את השלילה כ-silentred מאשר את השלילה.
טבלת התוצאות נותנת לכל נתיב שנבדק שורה משלו עם פסק דין ברור של כן/לא, טקסט הכלל המדויק ומספר השורה שהכריעו אותו, וכן - בכל פעם שרלוונטי - הערה בשפה פשוטה המסבירה שלילה מוצלת או כלל ספריית אב בירושה. זה הפרט שהופך את .gitignore מבלבל לכזה שאתה באמת יכול לחשוב עליו לפני ביצוע.