Kurs
Git ile çalışırken deponuzu temiz ve düzenli tutmak sadece bir en iyi uygulama değildir—sorunsuz iş birliği ve verimli sürüm kontrolü için gereklidir. İşte burada .gitignore devreye girer. Bu kullanışlı dosya Git’e hangi dosyaları yok sayacağını söyler, gereksiz karmaşayı önler ve commit’lerinizi gerçekten önemli olana odaklar.
.gitignore olmadan, deponuz geçici dosyalar, günlükler ve sürüm kontrolüne ait olmayan diğer şeylerle hızla dolabilir. Daha da kötüsü, yanlışlıkla hassas bilgileri paylaşabilirsiniz.
Bu eğitimde, projenizi düzenli tutmak, yaygın hatalardan kaçınmak ve Git ile daha etkili çalışmak için bir .gitignore dosyasını nasıl oluşturup kullanacağınızı öğreneceksiniz. Haydi başlayalım!
.gitignore Dosyası Nedir?
.gitignore dosyası, değişiklikler aşamalandığında veya commit’lendiğinde hangi dosyaların ya da dizinlerin yok sayılması gerektiğini sürüm kontrol sistemine bildirmek için Git’te kullanılan bir yapılandırma dosyasıdır.
Geçici, sistem tarafından oluşturulan veya derleme ile ilgili dosyalar gibi gereksiz dosyaların deponuzu doldurmasını önler. Deponuzu temiz tutmak iş birliğini kolaylaştırır ve yalnızca gerekli dosyaların izlenmesini sağlar.
.gitignore dosyası, Git deponuzun kök dizinine yerleştirilen basit bir metin dosyasıdır. Git’e hangi dosya veya dizinlerin yok sayılacağını söyleyen desenler içerir. Bu desenler projenizin ihtiyaçlarına göre özelleştirilebilir, böylece iyi organize edilmiş bir depo korumanıza yardımcı olur.
Git ve GitHub’a yeni misiniz? bu GitHub ve Git eğitimi ile sürüm kontrolüne yeni başlayanlara uygun bir giriş yapın.
Yok saymayı düşünmeniz gereken bazı yaygın dosya ve dizin kategorileri şunlardır:
- Derleme çıktıları: Derleme sürecinde üretilen ve kaynak koddan yeniden oluşturulabilen dosyalar, örneğin:
dist/,build/(Frontend ve backend derleme çıktıları)target/(Java ve diğer derlenen dillerin derlemeleri)- Bağımlılıklar: Paket yönetim sistemleri, kurulan kütüphaneler için izlenmemesi gereken dizinler oluşturur:
node_modules/(Node.js)vendor/(PHP, Composer).venv/,venv/(Python sanal ortamları)- Sisteme özgü dosyalar: İşletim sistemi tarafından otomatik oluşturulan ve projeye katkı sunmayan dosyalar:
.DS_Store(macOS)Thumbs.db(Windows)- IDE yapılandırma dosyaları: Her geliştirici farklı bir geliştirme ortamı kullanabilir, bu nedenle kişisel ayarları sürüm kontrolüne dahil edilmemelidir:
.vscode/(VS Code).idea/(JetBrains IDE’leri).project,.settings/(Eclipse)- Günlükler ve geçici dosyalar: Günlükler, önbellekler ve geçici dosyalar gereksiz karmaşayı önlemek için yok sayılmalıdır:
*.log,npm-debug.log*,yarn-debug.log*,yarn-error.log*(Çeşitli araçlardan günlükler)*.tmp,*.bak(Geçici ve yedek dosyalar).mypy_cache/,__pycache__/(Python önbellekleri).ipynb_checkpoints/(Jupyter Notebook kontrol noktaları)- Ortam ve gizli dosyalar: Hassas kimlik bilgileri ve ortama özgü yapılandırmalar asla commit’lenmemelidir:
.env,.env.local,.env.development,.env.productionsecrets.json,config.json(Hassas yapılandırma dosyaları)- Veritabanı ve depolama dosyaları: Bunlar yerel olarak üretilir ve sürüm kontrolüne dahil edilmemelidir:
*.sqlite,*.sqlite3,*.db(SQLite veritabanı dosyaları)dump.rdb(Redis veritabanı dökümü)- CI/CD ve kapsam dosyaları: Test kapsamı raporları ve diğer CI/CD çıktıları yok sayılmalıdır:
coverage/,*.lcov(Kod kapsamı raporları).tox/,.pytest_cache/(Python test dosyaları)
Git’i yüklemeniz mi gerekiyor? Hızlıca kurulum için bu Git kurulum eğitimindeki adım adım rehberi izleyin.
.gitignore Söz Dizimi
Belirtildiği gibi, .gitignore dosyaları, yok sayılıp sayılmayacaklarını belirlemek için deponuzdaki dosya adlarıyla eşleştirilen desenler içerir.
Temel söz dizimi
Özünde, .gitignore dosyası her biri yok sayılacak bir deseni temsil eden satırlardan oluşur. Desenler şunları eşleştirebilir:
- Belirli dosyalar
- Dosya türleri
- Dizinler
Dosya ayrıca, # ile başlayan satırlar aracılığıyla eklenebilen yorumları ve okunabilirliği artırmak için boş satırları destekler.
İşte temel yapının bir özeti:
- Belirli bir dosyayı yok sayma: Dosyayı yok saymak için adını doğrudan listeleyebilirsiniz.
secrets.txt
- Bir dizinin tamamını yok sayma: Dizin adının sonuna bir
/ekleyerek o dizinin içindeki her şeyi yok sayabilirsiniz.
logs/
- Belirli bir türdeki tüm dosyaları yok sayma: Joker karakterler (
*) belirli bir uzantıya sahip tüm dosyaları yok saymak için kullanılabilir.
*.py
- Olumsuzlama:
!kullanarak bir deseni olumsuzlayabilir ve normalde yok sayılacak belirli dosya veya dizinleri açıkça izleyebilirsiniz.
*.txt # Tüm .txt dosyalarını yok sayar
!readme.txt # readme.txt hariç
.gitignore Dosyası Nasıl Oluşturulur ve Kullanılır
.gitignore oluşturmak ve kullanmak oldukça basittir. Bu bölümde adımları anlatacağım.
.gitignore dosyası oluşturma
Adım 1: Depo köküne gidin. .gitignore dosyası genellikle bir Git projesinin kök dizinine yerleştirilir. Terminalinizi veya komut satırınızı açın ve Git deponuzun kök dizinine gidin:
cd /path/to/your/repo
Adım 2: .gitignore dosyasını oluşturun. Kök dizindeyken, herhangi bir metin düzenleyiciyi kullanarak veya terminalde aşağıdaki gibi bir komut çalıştırarak .gitignore dosyasını oluşturun:
touch .gitignore
Adım 3: Dosyaya desenler ekleyin. .gitignore dosyasını bir metin düzenleyicide açın ve dosya veya dizinleri yok saymak için gerekli desenleri ekleyin. Her satır farklı bir deseni temsil eder.
İşte temel bir projede yaygın olarak kullanılan örnek bir .gitignore dosyası:
# node_modules ve bağımlılık dizinlerini yok say
node_modules/
vendor/
# Derleme çıktıları yok say
dist/
build/
*.log
# Sistem tarafından oluşturulan dosyaları yok say
.DS_Store
Thumbs.db
# Ortam ve gizli dosyaları yok say
.env
config.json
Gerekli desenleri ekledikten sonra dosyayı kaydedin. Git, değişiklikleri aşamalandırırken veya commit’lerken bu dosyaları otomatik olarak yok sayacaktır.
Adım 4: Dosyayı depoya commit’leyin. Tüm iş arkadaşlarının aynı yok sayma kurallarını kullanması için .gitignore dosyasını depoya commit’lemek önemlidir. Bu, projeye dahil olan herkes için tutarlılığı sağlar.
git add .gitignore
git commit -m "Add .gitignore file"
git push
.gitignore dosyası commit’lendiğinde, tüm ekip için ortak yok sayma kuralları belirlemiş olursunuz.
Git’te push ve pull işlemlerinde ustalaşmak mı istiyorsunuz? Uzaktaki depolarla çalışmanızı nasıl senkronize edeceğinizi bu Git push ve pull eğitiminde öğrenin.
.gitignore Kullanımı için En İyi Uygulamalar
Bir .gitignore dosyası oluşturmak, temiz bir Git deposu sürdürmenin basit bir parçasıdır; ancak dosyanın zaman içinde etkin şekilde yönetilmesini sağlamak için izlenmesi gereken bazı en iyi uygulamalar vardır.
Genel bir .gitignore kullanın
Birden fazla projede çalışan geliştiriciler için, proje türünden bağımsız olarak her depodan hariç tutmak isteyebileceğiniz belirli dosyalar vardır.
Bunları her projenin .gitignore dosyasına eklemek yerine, sisteminizdeki tüm depolara uygulanan genel bir .gitignore yapılandırabilirsiniz.
Genel bir .gitignore dosyasını yapılandırmak için:
- Bir
.gitignore_globaldosyası oluşturun:
touch ~/.gitignore_global
- Genel olarak yok saymak istediğiniz dosyalar için desenler ekleyin, örneğin:
.DS_Store
*.log
/.vscode/
/.idea/
- Git’i genel
.gitignoredosyasını kullanacak şekilde ayarlayın:
git config --global core.excludesfile ~/.gitignore_global
Mevcut şablonlardan yararlanın
Her yeni proje için .gitignore dosyasını sıfırdan oluşturmak yerine, belirli dillere, framework’lere veya ortamlara yönelik önceden yapılandırılmış .gitignore şablonlarından yararlanabilirsiniz.
Bu şablonlar için en iyi kaynaklardan biri GitHub’ın resmi .gitignore deposudur; burada yüzlerce programlama dili ve framework’e uyarlanmış .gitignore dosyaları bulabilirsiniz.
.gitignore’u düzenli olarak gözden geçirin
Projeler geliştikçe, .gitignore dosyasına dahil edilmesi gereken yeni dosya ve dizinler ortaya çıkabilir. Dosyanızı belirli aralıklarla gözden geçirip güncellemeniz, projelerinizin mevcut durumunu yansıtması açısından önemlidir.
.gitignore dosyasını güncellemeniz gerekebilecek bazı durumlar şunlardır:
- Ek dosyalar üreten yeni araçlar veya kütüphaneler benimsemek (ör. yeni bir derleme sistemine geçmek).
- Dizinleri yeniden düzenlemek veya yeniden yapılandırmak; bu, hariç tutulması gereken yeni dosyalarla sonuçlanabilir.
- Artık projenin parçası olmayan eski dosya veya dizinleri kaldırmak.
.gitignore Sorun Giderme
Bir .gitignore dosyası ayarladıktan sonra bile, belirli dosyaların izlenmesi veya desenlerin beklendiği gibi çalışmaması gibi durumlarla karşılaşabilirsiniz. Bu bölümde iki yaygın sorun giderme alanını ve bunların nasıl çözüleceğini ele alacağız.
Önceden commit’lenmiş dosyaların izlenmesi
.gitignore dosyası önceden commit’lenmiş dosyalara geriye dönük olarak uygulanmaz.
Belirli dosyalar commit’lendikten sonra .gitignore’a bir desen eklerseniz, bu dosyalar .gitignore dosyasındaki desenle eşleşseler bile Git onları izlemeye devam edecektir.
Önceden commit’lenmiş dosyaların izlenmesini durdurmak için şu adımları izleyin:
- Dosyaları Git’in takibinden kaldırın:
git rmkomutunu kullanarak bunları çalışma dizininizde tutarken depodan kaldırın.
git rm --cached <file_or_directory_name>
- Değişiklikleri commit’leyin: Dosyaları Git’in takibinden kaldırdıktan sonra, bu dosyaların artık sürüm kontrol geçmişinin parçası olmaması için değişiklikleri commit’leyin.
git commit -m "Stop tracking ignored files"
- Değişiklikleri uzak depoya gönderin: Son olarak, dosyaların artık izlenmemesini sağlamak için değişiklikleri uzak depoya gönderin.
git push
Bu adımları uyguladıktan sonra Git dosyaları izlemeyi durduracaktır. Commit’lenmiş dosya çalışma dizininizde kalır ancak .gitignore desenlerinize göre gelecekteki commit’lerde yok sayılır.
Desenlerin çalıştığından emin olun
Bazen, yok sayılmasını beklediğiniz belirli dosyaların yine de Git durumunda göründüğünü veya izlenmeye devam ettiğini fark edebilirsiniz.
.gitignore desenlerinizin doğru çalıştığından emin olmak için şu adımları izleyin:
- Dosyalarınızın durumunu kontrol edin: Hangi dosyaların Git tarafından izlendiğini görmek için
git statuskomutunu kullanın. Bu, yok sayılan dosyalarınızın hâlâ listelenip listelenmediğini doğrulamanıza yardımcı olur.
git status
- Desenin doğru olduğundan emin olun:
.gitignoredesenlerinizin sözdizimini doğru biçimlendirildiklerinden emin olmak için iki kez kontrol edin. Örneğin: - Doğru dizin yolunu (deponun köküne göre) kullandığınızdan emin olun.
- Benzer adlara sahip tüm dosyaların izlenmesini önlemek için belirli dizinleri hedeflemek üzere bir
/ekleyin.
- Önbelleği yenileyin:
.gitignoredosyanızı yakın zamanda güncellediyseniz ve değişiklikler uygulanmıyorsa, Git önceki önbelleğini tutuyor olabilir. Önbelleği yenilemek için şu komutu çalıştırın:
git rm -r --cached .
git add .
git commit -m "Refresh .gitignore"
- İstisnaları kontrol edin: Bazen,
.gitignoreiçindeki belirli bir desen dosyada başka bir daha spesifik desen tarafından geçersiz kılınabilir. Çelişen kurallar olmadığından emin olmak için kurallarınızı gözden geçirin.
Hızlı bir Git başvuru kılavuzu mu arıyorsunuz? Temel komutları parmaklarınızın ucunda tutmak için bu Git cheat sheet’ine göz atın.
Sonuç
Bir .gitignore dosyası küçük görünebilir, ancak Git deponuzu temiz ve yönetilebilir tutmada büyük bir rol oynar. Bağımlılıklar, derleme çıktıları ve sistem tarafından oluşturulan dosyalar gibi gereksiz dosyaları yok sayarak projenizin düzenli ve dağınıklıktan uzak kalmasını sağlarsınız.
Bu eğitimde bir .gitignore dosyasını nasıl oluşturacağınızı, desenler ekleyeceğinizi ve deponuzu verimli tutmak için en iyi uygulamaları nasıl hayata geçireceğinizi öğrendiniz. Bu becerilerle sürüm kontrolüyle ilgili sorunlardan kaçınacak ve ekibinizde herkes için iş birliğini daha sorunsuz hale getireceksiniz.
Git becerilerinizi derinleştirmek istiyorsanız, yapılandırılmış bir öğrenme yolu için Git Fundamentals’a göz atın. Ayrıca Foundations of Git ve Introduction to GitHub Concepts gibi uygulamalı kursları keşfederek sürüm kontrolü ve iş birliği iş akışları hakkında sağlam bir anlayış kazanabilirsiniz!
SSS
.gitignore Git tarafından zaten izlenen dosyaları kaldırır mı?
Hayır, .gitignore yalnızca yeni dosyaların izlenmesini engeller. Bir dosya hâlihazırda sürüm kontroldeyse, onu .gitignore’a eklemek kaldırmaz. Zaten commit’lenmiş bir dosyanın izlenmesini durdurmak için şunu kullanmanız gerekir:
git rm --cached filename
Ardından değişiklikleri commit’leyin.
Bir projede birden fazla .gitignore dosyasına sahip olabilir miyim?
Evet! Projenizin farklı dizinlerine .gitignore dosyaları yerleştirebilirsiniz. Her biri yalnızca bulunduğu dizin ve alt dizinlerdeki dosyalara uygulanır.
Belirli bir türdeki tüm dosyaları nasıl yok sayarım?
Joker karakterler kullanabilirsiniz. Örneğin, tüm .log dosyalarını yok saymak için:
*.log
Bu, .log uzantısına sahip tüm dosyaları hariç tutar.
Belirli bir dosyayı yok sayabilir ama yine de kendi çalışmam için takip edebilir miyim?
Evet, ancak commit’lenmediğinden manuel olarak emin olmanız gerekir. Bunu yapmanın bir yolu geçici bir çözüm olan git update-index --assume-unchanged filename kullanmaktır. Daha iyi bir yaklaşım genel bir .gitignore dosyası kullanmaktır (bir sonraki soruya bakın).
Genel .gitignore dosyası nedir ve nasıl kurarım?
Genel .gitignore, makinenizdeki tüm depolarda dosyaları yok saymak için kullanılır. Bu, .DS_Store veya Thumbs.db gibi sisteme özgü dosyalar için kullanışlıdır. Genel bir .gitignore oluşturmak ve yapılandırmak için:
git config --global core.excludesfile ~/.gitignore_global
Ardından, gerektiği gibi ~/.gitignore_global dosyasına desenler ekleyin.
.gitignore dosyam neden çalışmıyor?
Eğer .gitignore bir dosyayı yok saymıyorsa, şu yaygın sorunları kontrol edin:
- Dosya zaten izleniyor—
git rm --cached filenamekullanarak kaldırmanız gerekir. .gitignoredeseni hatalı olabilir—sözdiziminizi iki kez kontrol edin.- Çelişen bir kural var—Git son eşleşen kuralı uygular, bu yüzden sıra önemlidir.
Bir dizini yok sayıp içindeki belirli bir dosyayı tutabilir miyim?
Evet! Hariç tutma kuralı kullanın. Örneğin, bir klasördeki her şeyi yok sayıp keepme.txt dosyasını tutmak için:
folder_name/*
!folder_name/keepme.txtİki ekip üyesinin .gitignore dosyaları farklıysa ne olur?
Eğer .gitignore depoya commit’lendiyse, tüm ekip üyeleri aynı kuralları uygular. Ancak biri .gitignore’u yerelde değiştirir ve bu değişikliği commit’lemezse, yok sayılan dosyalar farklı olabilir. En iyisi .gitignore’un sürümlenmesi ve ekip tarafından ortaklaşa kararlaştırılmasıdır.
Hangi dosyaların yok sayıldığını nasıl kontrol edebilirim?
Hangi dosyaların .gitignore tarafından hariç tutulduğunu görmek için şu komutu çalıştırın:
git status --ignored
Ya da daha ayrıntılı bir liste için:
git check-ignore -v filename
.gitignore’da yok saymayı geri alabilir miyim?
Evet! Dosyayı .gitignore’dan çıkarın ve ardından yeniden izlemek için şunu kullanın:
git add filename
Ardından değişiklikleri commit’leyin.

