Git .gitignore fayli

Git ignore va .gitignore


ULASHISH

.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

  1. Lokal Git repozitoriyingizning ildiz papkasiga o‘ting.
  2. .gitignore nomli 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 — .gitignore katta-kichik harflarni farqlaydi!
  • Agar fayl allaqachon kuzatilayotgan bo‘lsa, uni kuzatishni to‘xtatish uchun git rm --cached buyrug‘idan foydalaning.
  • Jamoadoshlaringiz uchun murakkab qoidalarni tushuntirishda izohlardan (#) foydalaning.
  • E’tiborsiz qoldirilgan fayllaringiz kuzatilayotgan-kuzatilmayotganini ko‘rish uchun git status buyrug‘idan foydalaning.
  • Yodda tuting: .gitignore faqat 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!