1. Adım: Geçmişi Temizlemeden Önce Anahtarı İptal Edin
Eğer commit herkese açık bir GitHub reposuna pushlandıysa, otomatik tarama botları birkaç saniye içinde anahtarı yakalamış olabilir. `git rm` yapıp yeni bir commit atmak eski commit'teki sırrı silmez; bu yüzden ilk iş ilgili API anahtarını veya veritabanı parolasını iptal edip yenilemek (rotate) olmalıdır.
2. Adım: git filter-repo ile Dosyayı veya Satırı Tarihçeden Silme
Eski `git filter-branch` yerine resmi olarak önerilen araç `git-filter-repo`dur. Tek bir `.env` dosyasını tüm commit geçmişinden tamamen çıkarabilir veya bir dosyadaki belirli anahtar dizgisini `***REMOVED***` ile değiştirebilirsiniz.
# 1) Taze bir mirror/klon üzerinde çalışın
pip install git-filter-repo
# 2a) Yanlışlıkla eklenen .env dosyasını tüm geçmişten silme
git filter-repo --path .env --invert-paths --force
# 2b) Veya belirli bir anahtar dizgisini metin olarak maskeleme
# secrets.txt içeriği: sk_live_ORNEK_ANAHTAR==>***REMOVED***
git filter-repo --replace-text secrets.txt --force
# 3) Temizlenmiş geçmişi zorla pushlayın ve .gitignore'a ekleyin
echo ".env" >> .gitignore
git push --force --all
git push --force --tags3. Adım: Tekrarını TokenGuard Pre-Commit Kancasıyla Önleyin
Tarihçeyi temizlemek acil müdahaledir; kalıcı çözüm ise sırrın daha `git commit` aşamasında bilgisayarınızdan dışarı çıkmasını engellemektir. TokenGuard, stage'lenmiş değişiklikleri hem bilinen token kalıplarıyla hem de Shannon entropi analiziyle tarar ve kodu hiçbir sunucuya göndermeden engeller.
pip install tokenguard-cli
# Staged dosyaları commit öncesi tara
tokenguard scan --staged
# Otomatik Git pre-commit kancası kur
tokenguard install-hookKaynak: TokenGuard — Çevrimdışı Git Pre-Commit Secret Tarayıcı
Kaynak: Git Secret Sızıntılarını Push Öncesi Engelleme: TokenGuard
