Asosiy kontentga o‘tish
Innovialabs

.gitignore qo‘llanmasi: nimani e’tiborsiz qoldirish va shablonlar

Amaliyot3 daq

Qisqacha

.gitignore Git ga qaysi kuzatilmaydigan fayllarni repozitoriyga qo‘shmaslikni aytadi: bog‘liqliklar, build natijalari, lokal sozlamalar va sirlar; allaqachon kommit qilingan fayllarga u ta’sir qilmaydi — ularni git rm --cached bilan olib tashlash kerak.

.gitignore nima qiladi

.gitignore — shablonlar ro‘yxati yozilgan matnli fayl. Ularga mos keladigan fayllarni Git git status da ko‘rsatmaydi va git add . orqali qo‘shmaydi.

Eslab qolish kerak bo‘lgan asosiy narsa: .gitignore faqat kuzatilmaydigan fayllar uchun ishlaydi. Agar fayl allaqachon kommit qilingan bo‘lsa, uni .gitignore ga qo‘shish hech narsani o‘zgartirmaydi — Git uni kuzatishda davom etadi.

Odatda nimalar e’tiborsiz qoldiriladi:

  • bog‘liqliklar: node_modules/, .venv/, Pods/;
  • build natijalari: dist/, build/, keshlar;
  • lokal sozlamalar: IDE fayllari, .DS_Store, Thumbs.db;
  • sirlar: .env, kalitlar, sertifikatlar, keystore.

Nimalar e’tiborsiz qoldirilmaydi: manba kodi, lock-fayllar (package-lock.json, poetry.lock) va .env.example kabi konfig namunalari.

Shablonlar sintaksisi

ShablonNimaga mos keladi
debug.logShu nomdagi fayl yoki papka, istalgan darajada
*.log.log kengaytmali barcha fayllar
build/Faqat build papkalari (oxiridagi slesh)
/config.local.jsonFaqat ildizda, shu .gitignore yonida
docs/*.pdfTo‘g‘ridan-to‘g‘ri docs dagi PDF, ichki papkalarda emas
**/tempIstalgan chuqurlikdagi temp
logs/**logs papkasining butun ichidagisi
a/**/ba/b, a/x/b, a/x/y/b
file?.txtAynan bitta istalgan belgi
[abc].txtTo‘plamdan bitta belgi

Ko‘pincha chalkashtiriladigan qoidalar:

  • * / dan o‘tmaydi. Ichki papkalarni qamrab olish uchun ** kerak.
  • Shablonda slesh boshida yoki o‘rtasida bo‘lsa, u .gitignore turgan papkaga bog‘lanadi. Sleshsiz shablon istalgan darajada mos keladi.
  • # bilan boshlanadigan qatorlar — izohlar. Bo‘sh qatorlar hisobga olinmaydi.

Inkor va ichki fayllar

Undov belgisi ! oldingi shablon chiqarib tashlagan faylni qaytaradi:

*.env
!example.env

Tuzoq: agar butun papka chiqarib tashlangan bo‘lsa, undagi faylni qaytarib bo‘lmaydi. Git shunchaki ichkariga kirmaydi. Bunday ishlamaydi:

logs/
!logs/.gitkeep

Bunday esa ishlaydi — papkaning o‘zini emas, ichidagisini chiqarib tashlaymiz:

logs/*
!logs/.gitkeep

Ichki .gitignore fayllar. Istalgan ichki papkada o‘z .gitignore faylingiz bo‘lishi mumkin. Uning shablonlari shu papkaga nisbatan hisoblanadi, qoidalar to‘qnashganda esa chuqurroqdagi fayl ustun keladi.

.git/info/exclude — xuddi shu qoidalar, lekin fayl kommit qilinmaydi. Bitta repozitoriydagi shaxsiy istisnolar uchun mos.

Global gitignore

OS va muharriringiz qoldiradigan keraksiz fayllarni har bir repozitoriyda emas, barcha loyihalar uchun bir marta e’tiborsiz qoldirgan ma’qul:

git config --global core.excludesFile ~/.gitignore_global

U yerga .DS_Store, Thumbs.db, .idea/, .vscode/, *.swp yaxshi mos keladi. Loyiha .gitignore fayliga esa loyihaning o‘ziga va unda ishlaydigan hammaga tegishli narsalarni yozing.

Tayyor shablonlar

Node.js / frontend:

node_modules/
dist/
build/
.next/
coverage/
npm-debug.log*
.env
.env.*
!.env.example

Python:

__pycache__/
*.py[cod]
.venv/
venv/
*.egg-info/
dist/
build/
.pytest_cache/
.mypy_cache/
.env

Mobil (Android, iOS, Flutter):

# Android
.gradle/
build/
local.properties
*.jks
*.keystore
# iOS
xcuserdata/
DerivedData/
*.xcuserstate
# Flutter
.dart_tool/

iOS da Pods/ ni kommit qilish-qilmaslik — jamoa qarori; ikkala yondashuv ham uchraydi. Katta shablonlar to‘plami GitHub dagi github/gitignore repozitoriyida yuritiladi.

Allaqachon repozitoriyda bo‘lgan fayllarni olib tashlash

Fayl allaqachon kuzatilayotgan bo‘lsa, uni .gitignore ga qo‘shing va diskdan o‘chirmasdan indeksdan olib tashlang:

git rm --cached config.local.json
git rm -r --cached build/
git commit -m "Stop tracking local files"

Qaysi qoida ishlayotganini tekshirish: git check-ignore -v fayl/yo‘li.

Sirlar bilan bu yetarli emas. git rm --cached faylni faqat keyingi kommitlardan olib tashlaydi, tarixda esa u qoladi va repozitoriyga kirish huquqi bor har kim uni topa oladi. To‘g‘ri tartib:

  1. Kalit, parol yoki tokenni darhol bekor qiling va almashtiring. Uni oshkor bo‘lgan deb hisoblang.
  2. Faylni kuzatuvdan olib tashlang va .gitignore ga qo‘shing.
  3. Zarur bo‘lsa, tarixni qayta yozing (git filter-repo yoki BFG Repo-Cleaner), force push qiling va jamoadan repozitoriyni qaytadan klonlashni so‘rang.

Sirni almashtirmasdan tarixni qayta yozish yordam bermaydi: repozitoriy nusxalari allaqachon tarqalgan bo‘lishi mumkin.

Sintaksis batafsil Git ning rasmiy hujjatlarida yozilgan.

Ko‘p beriladigan savollar

Ehtimol, Git uni allaqachon kuzatmoqda. git rm --cached <fayl> ni bajaring va o‘zgarishni kommit qiling. Mos qoidani git check-ignore -v bilan ham tekshirish mumkin.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.