Git .gitignore fayli
Git ignore va .gitignore
.gitignore nima?
.gitignore fayli Git’ga qaysi fayl va papkalarni e’tiborsiz qoldirish (kuzatmaslik) kerakligini bildiradi.
Bu log fayllar, vaqtinchalik fayllar, build artefaktlari yoki shaxsiy fayllarni repozitoriyingizdan tashqarida saqlash uchun foydali.
- E’tiborsiz qoldiriladigan fayllarga misollar: log fayllar, vaqtinchalik fayllar, yashirin fayllar, shaxsiy fayllar, OT/muharrir fayllari va hokazo.
.gitignore faylining o‘zi Git tomonidan kuzatiladi, shuning uchun repozitoriydan foydalanadigan hamma bir xil fayllarni e’tiborsiz qoldiradi.
.gitignore’dan qachon foydalanish kerak
- Maxfiy, lokal yoki keraksiz fayllarni repozitoriyingizdan tashqarida saqlamoqchi bo‘lganingizda
- Loyihani boshqalar bilan ulashayotganda va Git tarixini chalkashtirib yubormaslikni istaganingizda
- Qo‘shimcha fayllar yaratadigan build vositalari yoki muharrirlar bilan ishlaganingizda
.gitignore faylini yaratish
- Lokal Git repozitoriyingizning ildiz papkasiga o‘ting.
.gitignorenomli fayl yarating:
Misol
touch .gitignore
Papkalarni e’tiborsiz qoldirish
Papkani va uning ichidagi hamma narsani e’tiborsiz qoldirish uchun oxiriga slesh belgisini qo‘ying:
temp/
Bu loyihangizning istalgan joyidagi temp nomli har qanday papkani e’tiborsiz qoldiradi.
Wildcard belgilar va shablonlar
Wildcard belgilar bir vaqtning o‘zida ko‘plab fayl yoki papkalarga mos kelish imkonini beradi:
*istalgan sondagi belgilarga mos keladi?bitta belgiga mos keladi[abc]to‘plamdagi istalgan belgiga mos keladi[!abc]to‘plamda bo‘lmagan istalgan belgiga mos keladi
*.tmp # all .tmp files my?ile.txt # matches my1ile.txt, myAile.txt, etc. log[0-9].txt # log1.txt, log2.txt, ... log9.txt
Inkor (!)
Aks holda e’tiborsiz qoldiriladigan narsani e’tiborsiz qoldirmaslik uchun ! belgisidan foydalaning. Bu istisno deb ataladi:
*.log !important.log
Bu important.log’dan tashqari barcha .log fayllarini e’tiborsiz qoldiradi.
Izohlar va bo‘sh qatorlar
# bilan boshlanadigan qatorlar izoh hisoblanadi va Git ularni e’tiborsiz qoldiradi. Bo‘sh qatorlar ham e’tiborsiz qoldiriladi. Qoidalaringizni tushuntirish uchun izohlardan foydalaning:
# Ignore log files *.log # Ignore temp folders temp/
Lokal va shaxsiy ignore qoidalari
Agar fayllarni faqat o‘zingiz uchun (repozitoriydan foydalanadigan hamma uchun emas) e’tiborsiz qoldirmoqchi bo‘lsangiz, ularni .git/info/exclude fayliga qo‘shing. Bu xuddi .gitignore kabi ishlaydi, lekin boshqalar bilan ulashilmaydi.
Global .gitignore (foydalanuvchi darajasida)
Barcha loyihalaringiz uchun global .gitignore faylini sozlashingiz mumkin. Bu OT yoki muharrir fayllarini (masalan, .DS_Store yoki Thumbs.db) hamma joyda e’tiborsiz qoldirish uchun juda qulay:
git config --global core.excludesfile ~/.gitignore_global
So‘ng shablonlaringizni ~/.gitignore_global fayliga qo‘shing.
Faylni kuzatishni qanday to‘xtatish mumkin
Agar faylni .gitignore fayliga qo‘shsangiz-u, lekin Git uni hali ham kuzatayotgan bo‘lsa, Git’ga kuzatishni to‘xtatishni aytishingiz kerak:
git rm --cached filename.txt
Bu faylni repozitoriydan olib tashlaydi, lekin kompyuteringizda saqlab qoladi. Keyingi safar commit qilganingizda Git uni e’tiborsiz qoldiradi.
Maslahatlar va muammolarni bartaraf etish
- Imlo xatolarini tekshiring —
.gitignorekatta-kichik harflarni farqlaydi! - Agar fayl allaqachon kuzatilayotgan bo‘lsa, uni kuzatishni to‘xtatish uchun
git rm --cachedbuyrug‘idan foydalaning. - Jamoadoshlaringiz uchun murakkab qoidalarni tushuntirishda izohlardan (
#) foydalaning. - E’tiborsiz qoldirilgan fayllaringiz kuzatilayotgan-kuzatilmayotganini ko‘rish uchun
git statusbuyrug‘idan foydalaning. - Yodda tuting:
.gitignorefaqat Git hali kuzatmayotgan fayllarga ta’sir qiladi.
Shablon sintaksisi
Quyida ba’zi keng tarqalgan shablonlar va ularning qanday mos kelishi keltirilgan:
| Shablon | Izoh/mosliklar | Misollar |
|---|---|---|
| Bo‘sh qatorlar e’tiborsiz qoldiriladi | ||
| # izoh matni | # bilan boshlanadigan qatorlar e’tiborsiz qoldiriladi | |
| name | Barcha name fayllari, name papkalari hamda istalgan name papkasidagi fayl va papkalar | /name.log /name/file.txt /lib/name.log |
| name/ | / bilan tugashi shablon papka uchun ekanini bildiradi. Istalgan name papkasidagi barcha fayl va papkalarga mos keladi | /name/file.txt /name/log/name.log mos kelmaydi: /name.log |
| name.file | name.file nomli barcha fayllar | /name.file /lib/name.file |
| /name.file | / bilan boshlanishi shablon faqat ildiz papkadagi fayllarga mos kelishini bildiradi | /name.file mos kelmaydi: /lib/name.file |
| lib/name.file | Muayyan papkalardagi fayllarni ko‘rsatuvchi shablonlar har doim ildiz papkaga nisbatan olinadi (hatto / bilan boshlamasangiz ham) | /lib/name.file mos kelmaydi: name.file /test/lib/name.file |
| **/lib/name.file | / dan oldin ** bilan boshlanishi shablon faqat ildizdagi emas, balki repozitoriydagi istalgan papkaga mos kelishini bildiradi. | /lib/name.file /test/lib/name.file |
| **/name | Barcha name papkalari hamda istalgan name papkasidagi fayl va papkalar | /name/log.file /lib/name/log.file /name/lib/log.file |
| /lib/**/name | lib papkasi ichidagi barcha name papkalari hamda istalgan name papkasidagi fayl va papkalar. | /lib/name/log.file /lib/test/name/log.file /lib/test/ver1/name/log.file mos kelmaydi: /name/log.file |
| *.file | .file kengaytmali barcha fayllar | /name.file /lib/name.file |
| *name/ | name bilan tugaydigan barcha papkalar | /lastname/log.file /firstname/log.file |
| name?.file | ? bitta ixtiyoriy belgiga mos keladi | /names.file /name1.file mos kelmaydi: /names1.file |
| name[a-z].file | [diapazon] ko‘rsatilgan diapazondagi bitta belgiga mos keladi (bu holatda a-z oralig‘idagi belgi, shuningdek, raqam ham bo‘lishi mumkin.) | /names.file /nameb.file mos kelmaydi: /name1.file |
| name[abc].file | [to‘plam] ko‘rsatilgan belgilar to‘plamidagi bitta belgiga mos keladi (bu holatda a, b yoki c) | /namea.file /nameb.file mos kelmaydi: /names.file |
| name[!abc].file | [!to‘plam] belgilar to‘plamida ko‘rsatilganlardan tashqari bitta belgiga mos keladi (bu holatda a, b yoki c) | /names.file /namex.file mos kelmaydi: /namesb.file |
| *.file | .file kengaytmali barcha fayllar | /name.file /lib/name.file |
| name/ !name/secret.log |
! inkor yoki istisnoni bildiradi. Istalgan name papkasidagi barcha fayl va papkalarga mos keladi, name/secret.log bundan mustasno | /name/file.txt /name/log/name.log mos kelmaydi: /name/secret.log |
| *.file !name.file |
! inkor yoki istisnoni bildiradi. name.file’dan tashqari .file kengaytmali barcha fayllar | /log.file /lastname.file mos kelmaydi: /name.file |
| *.file !name/*.file junk.* |
Inkordan keyin yangi shablonlar qo‘shilsa, avval inkor qilingan fayl qayta e’tiborsiz qoldiriladi name papkasidagilardan tashqari .file kengaytmali barcha fayllar. Fayl nomi junk bo‘lsa, bu istisno amal qilmaydi |
/log.file /name/log.file mos kelmaydi: /name/junk.file |
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!

GitHub
Bitbucket
GitLab