התעלמות מקבצים (.gitignore)
קובץ .gitignore מציין ל-git אילו קבצים ותיקיות לא צריך לעקוב אחריהם. זה אחד הקבצים החשובים ביותר במאגר.
למה צריך .gitignore?
- קבצים שנוצרים אוטומטית:
node_modules/,dist/,build/ - קבצים מקומיים:
.vscode/,.idea/,.DS_Store - קבצי סודות:
.env,credentials.json - קבצי לוג:
*.log,npm-debug.log - קבצי הפצה:
*.exe,*.apk
ללא .gitignore, היית מוסיף בטעות כל מיני קבצים זמניים, מנפח את המאגר ובמקרים מסוכנים - מסכן סודות.
איך משתמשים?
יוצרים קובץ בשם .gitignore בשורש המאגר (אפשר גם בתיקיות פנימיות). git יקרא אותו אוטומטית.
touch .gitignore
git add .gitignore
git commit -m "Add gitignore"
תחביר
דוגמאות בסיסיות
# הערות מתחילות עם #
# קבצים בודדים
secret.txt
.env
# כל הקבצים בעלי סיומת מסוימת
*.log
*.tmp
*.bak
# תיקיות (השם + /)
node_modules/
dist/
build/
# קבצים בתיקייה ספציפית
src/temp/
# רקורסיבי - בכל מקום במאגר
**/logs/
**/*.cache
שלילה - להחריג מתוך החרגה
*.log # מתעלם מכל קבצי log
!important.log # חוץ מ-important.log
תבניות מתקדמות
# כל קבצי .js בתוך build, אבל לא בכל מקום
build/**/*.js
# קבצים שמתחילים בנקודה
.env*
# שלילה ספציפית
!.env.example
דוגמה לפרויקט Node.js / React
# Dependencies
node_modules/
.pnp
.pnp.js
# Production build
dist/
build/
# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor / OS
.vscode/
.idea/
.DS_Store
Thumbs.db
# Testing
coverage/
# Misc
*.tgz
.cache/
דוגמה לפרויקט React Native / Expo
# Expo
.expo/
dist/
web-build/
# Native
ios/Pods/
android/.gradle/
android/app/build/
*.apk
*.aab
# Dependencies
node_modules/
# Env
.env
google-services.json
GoogleService-Info.plist
איך להתחיל .gitignore לפרויקט חדש?
האתר gitignore.io מייצר עבורכם .gitignore לפי הטכנולוגיות שאתם משתמשים בהן. למשל: Node, VisualStudioCode, macOS.
GitHub גם מציעה תבניות רשמיות לכל שפה.
בעיה נפוצה: קובץ שכבר tracked
אם הוספת קובץ ל-.gitignore אבל הוא כבר נמצא בהיסטוריה, git ימשיך לעקוב אחריו. הסיבה: .gitignore משפיע רק על קבצים untracked.
הפתרון: להסיר את הקובץ מ-staging (לא מהדיסק):
git rm --cached .env
git commit -m "Remove .env from tracking"
עכשיו git יתעלם מ-.env בעתיד, אבל הקובץ עדיין על הדיסק שלכם.
.gitkeep - שמירת תיקייה ריקה
git לא עוקב אחרי תיקיות ריקות. אם אתם רוצים לשמור תיקייה ריקה במאגר, נהוג ליצור בה קובץ ריק בשם .gitkeep:
mkdir uploads
touch uploads/.gitkeep
git add uploads/.gitkeep
זו לא פקודת git רשמית - פשוט מוסכמה.
בדיקה: למה git מתעלם מקובץ?
git check-ignore -v file.log
הפלט יראה לכם איזה כלל ב-.gitignore גורם לזה.
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה בדרך כלל נכנס ל-.gitignore בפרויקט Node.js?
הצגת התשובה
תשובה ד. תלויות שאפשר להתקין מחדש, וסודות.
-
קובץ כבר במעקב ואז הוספתם אותו ל-.gitignore. מה קורה?
הצגת התשובה
תשובה ב. .gitignore משפיע רק על קבצים שעוד לא במעקב.