🚫 .gitignore: Doğru Dosyaları Git Dışında Tut

gitignore: Doğru Dosyaları Git Dışında: .gitignore, bir hukuk ekibinin müşteriye gönderilecek sözleşme paketine bastığı "yayınlanmasın" damgası gibi çalışır: taslaklar ofis dosya

.gitignore, bir hukuk ekibinin müşteriye gönderilecek sözleşme paketine bastığı "yayınlanmasın" damgası gibi çalışır: taslaklar ofis dosya dolabında durmaya devam eder, sadece hiçbir zaman binadan çıkmazlar. Burada kavramayı netleştiren kritik soru: bir dosya zaten repository'ye commit edildiyse onu .gitignore'a eklemek Git geçmişinden siler mi? Hayır — .gitignore yalnızca izlenmeyen (untracked) dosyaların yanlışlıkla stage'lenmesini engeller; daha önce commit edilmiş her şey açıkça temizlenene kadar tarihte kalır. Java analojisi: Maven'ın varsayılan .gitignore'u `target/` klasörünü aynı nedenle dışlar — build aracı bu dosyaları deterministik biçimde yeniden üretir, dolayısıyla kaynağı (pom.xml + src/) göndermek yeterlidir ve target/'ı commit etmek her build'de repository'yi megabaytlarca şişirir. QA otomasyonunda bu sorun, biri Playwright `test-results/` klasörünü içinde video kayıtlarıyla birlikte yanlışlıkla commit ettiğinde kendini gösterir — clone süresi bir gecede üçe katlanır ve production URL'leri hakkındaki hassas test verisi genel repository geçmişine sızar.

Amaç: .gitignore neden var?

.gitignore dosyası Git'e hangi dosya ve klasörleri asla takip etmemesi gerektiğini söyler: build çıktısı, indirilen bağımlılıklar, IDE ayarları, OS çöp dosyaları, loglar ve secret'lar. Paylaşılan ve commit edilen bir dosyadır, böylece tüm takım aynı şeyleri elle hatırlamadan otomatik olarak yok sayar. Java analojisi: bir Maven projesi derlenmiş class dosyalarını ve oluşturulan jar'ları içeren target klasörünü asla commit etmez, sadece pom.xml ve kaynak dosyalar version control'dedir. Aynı mantık JavaScript projesindeki node_modules klasörü için de geçerlidir — üretilen sonucu değil, tarifi yani package.json'ı commit edersin.

İlk karar: commit mi ignore mu?

gitignore-create-and-match

.gitignore oluştur ve dosyaları filtrelemesini izle

Bir desen eklendiğinde Git’in eşleşen dosya ve klasörleri git status’tan nasıl otomatik atladığını izle.

Nasıl Oluşturulur: Git Bash, IntelliJ ve Diğer IDE'ler

Nereye konur: hemen hemen her zaman proje kök dizinine, package.json veya pom.xml'in yanına. Git ayrıca herhangi bir alt klasör içinde de bir .gitignore dosyasını destekler — iç içe (nested) bir .gitignore içindeki kurallar sadece o klasör ve altı için geçerlidir, belirli bir dosya için en yakın .gitignore kazanır. Kişisel olan ve takımla asla paylaşılmaması gereken yok sayma kuralları için ise global bir ignore dosyası kullanılır; bu, git config --global core.excludesFile ile bir kez ayarlanır, ya da repository-local ve hiçbir zaman commit edilmeyen .git/info/exclude dosyası kullanılır.

İçeriğinde Neler Bulunur: Pattern Söz Dizimi

QA automation projesi için gerçekçi bir .gitignore

node_modules/ ve .env* Satırları Git'e Ne Anlatır?

node_modules/ satırı SONUNDAKİ /…

node_modules/ satırı SONUNDAKİ / ile bunun bir KLASÖR olduğunu belirtir — Git bu isimde bir klasörle KARŞILAŞTIĞI HER YERDE (kaç seviye derinlikte olursa olsun) onu YOK SAYAR.