Git'te en sık yapılan hatalar ve nasıl geri alınır?
Git'i her gün kullanıyoruz ama işler ters gidince çoğumuz panikleyip klasörü silip yeniden klonluyoruz. Aşağıda en sık karşılaşılan durumları ve güvenli çözümlerini topladım.
1. Son commit mesajını yanlış yazdım
Henüz push etmediysen:
git commit --amend -m "Doğru mesaj"
Push ettiysen ve dalda başkası çalışıyorsa amend yapma; yeni bir commit at ya da ekiple konuşmadan geçmişi değiştirme.
2. Bir dosyayı commit'e eklemeyi unuttum
git add unutulan-dosya.php
git commit --amend --no-edit
3. Yanlış dala commit attım
Commit'i doğru dala taşı, sonra yanlış daldan geri al:
git switch dogru-dal
git cherry-pick <commit-hash>
git switch yanlis-dal
git reset --hard HEAD~1 # sadece push edilmemişse!
4. Push edilmiş bir commit'i geri almak
Paylaşılan dallarda geçmişi silmek yerine ters commit oluştur:
git revert <commit-hash>
Bu, değişikliği geri alan yeni bir commit üretir ve kimsenin geçmişini bozmaz.
5. reset --hard yaptım, her şey gitti
Çoğu zaman gitmemiştir. Git, HEAD'in gittiği her yeri bir süre tutar:
git reflog
git reset --hard HEAD@{2} # reflog'da istediğin satır
Commit edilmemiş değişiklikler ise reflog'da yoktur; o yüzden riskli komutlardan önce git stash alışkanlığı edin.
6. .env gibi gizli bir dosyayı push ettim
Dosyayı sonraki commit'te silmek yetmez, geçmişte durmaya devam eder. Doğru sıra:
- Önce anahtarı/şifreyi iptal et ve yenisini üret. En önemli adım bu.
- Dosyayı
.gitignore'a ekle. - Geçmişten temizlemek gerekiyorsa
git filter-repogibi bir araç kullan ve ekibe haber ver.
Küçük alışkanlıklar
git statusvegit diff --stagedile commit'ten önce ne gönderdiğine bak.- Riskli bir işlemden önce yedek dal aç:
git branch yedek-oncesi. push --forceyerinepush --force-with-leasekullan; başkasının değişikliğini ezmeni engeller.
Sizin başınıza gelen ve burada olmayan bir Git kazası varsa yazın, listeye ekleyelim.