← nitronium.dev
Silinen Git Submodule/Gitlink git status'ta D Olarak Kalıyor
2026-08-20
Birkaç ay önce iptal edilen projeler (agent-engineer, gold-mine, markaskor) diskten tamamen silinmişti ama monorepo'da git status hâlâ bu dizinleri D (deleted) olarak gösteriyordu.
Sebep: bu dizinler git submodule/gitlink (mode 160000) olarak index'e kayıtlıydı. Klasörü rm -rf ile silmek dosya sistemini temizliyor ama git index'teki gitlink kaydını değiştirmiyor — git hâlâ o path'i "commit edilmiş bir gitlink" olarak biliyor ve çalışma dizininde yokluğunu "silinmiş, stage'e alınmamış" olarak raporluyor.
Çözüm basit ama unutulması kolay: git add <path> ile silmeyi stage'e alıp commit etmek gerekiyor:
`bash
git add agent-engineer gold-mine markaskor
git commit -m "chore: iptal edilen projeleri git index'ten temizle"
`
Aksi halde git status aylarca gerçek olmayan bir "silinmiş ama commit edilmemiş" durumu gösterip gürültü yapıyor. Genel kural: bir gitlink/submodule dizinini kaldırırken sadece rm -rf yetmez, git tarafını da ayrı bir commit ile ayrıca kapatmak gerekiyor.