Git Hataları: Merge Conflict ve Yanlış Push Sorunları
eminbasbayan

İçindekiler
Bu yazıda neler var?
Bu bölümde Git kullanırken karşılaşabileceğiniz yaygın hataları ve bu hataların nasıl çözüleceğini adım adım inceleyeceğiz. Git'in esnek yapısı sayesinde çoğu hata kolayca çözülebilir, önemli olan hatanın kaynağını anlamaktır.
1. Merge Conflict (Birleştirme Çakışması)
Hata Açıklaması
Farklı branch'lerde aynı dosyanın aynı satırında değişiklik yapıldığında birleştirme sırasında merge conflict oluşur.
Hata Örneği
git merge feature/yeni-ozellik
Çıktı:
CONFLICT (content): Merge conflict in dosya.txt Automatic merge failed; fix conflicts and then commit the result.
Çözüm Adımları
- Git, çakışan dosyaları işaretler. Dosyayı açıp
<<<<<<<,=======,>>>>>>>gibi işaretlere bakın:
<<<<<<< HEAD Bu kısım master branch'ten geliyor. ======= Bu kısım feature branch'ten geliyor. >>>>>>> feature/yeni-ozellik
- Çakışmayı elle çözün:
- Hangi değişikliğin kalması gerektiğine karar verin
- Gereksiz kısımları silip dosyayı düzenleyin
- Çakışmayı çözdükten sonra değişiklikleri ekleyin ve commit yapın:
git add dosya.txt
git commit -m "Merge conflict çözüldü"
2. Yanlışlıkla Commit Yapmak
Hata Açıklaması
Commit mesajını yanlış yazmak veya eksik dosyalarla commit yapmak sık karşılaşılan hatalardandır.
Çözüm 1: Commit Mesajını Düzenlemek
Son commit mesajını değiştirmek için:
git commit --amend -m "Doğru commit mesajı"
Çözüm 2: Dosya Eklemeyi Unutmak
Commit yaptıktan sonra bir dosyayı eklemeyi unuttuysanız:
- Dosyayı ekleyin:
git add unuttugum_dosya.txt
- Commit'i düzenleyin:
git commit --amend
3. Yanlış Branch'te Çalışmak
Hata Açıklaması
Değişiklikleri yanlış branch'te yaparsanız, o değişiklikleri doğru branch'e taşımanız gerekir.
Çözüm Adımları
- Stash Kullanarak Değişiklikleri Kaydedin:
git stash
- Doğru branch'e geçin:
git checkout doğru-branch
- Stash'teki değişiklikleri geri yükleyin:
git stash pop
4. Commit'i Geri Almak (Undo Commit)
Çözüm 1: Commit'i Silmeden Geri Almak (git revert)
git revert, bir commit'i iptal eden yeni bir commit oluşturur:
git revert commit_id
Çözüm 2: Commit'i Silmek (git reset)
Soft Reset: Commit geri alınır ama değişiklikler kalır.
git reset --soft HEAD~1
Hard Reset: Commit ve değişiklikler tamamen silinir (dikkatli olun!):
git reset --hard HEAD~1
5. Uzak Depoya Yanlışlıkla Push Yapmak
Hata Açıklaması
Yanlışlıkla uzak depoya (örneğin GitHub) bir branch veya commit göndermek istenmeyen bir durumdur.
Çözüm Adımları
- Branch'i Silme:
Uzak branch'i silmek için:
git push origin --delete branch_adi
- Yanlış Commit'i Düzelterek Push Etme:
Commit'i geri alıp doğru commit'i gönderin:
git reset --hard HEAD~1
git push --force
Not: --force kullanımı dikkat gerektirir çünkü uzak depodaki diğer kullanıcıların kopyalarını etkileyebilir.
6. Untracked Dosyaları Temizlemek
Hata Açıklaması
Git tarafından takip edilmeyen (untracked) dosyalar proje klasöründe kalabalık yaratabilir.
Çözüm
Takip edilmeyen dosyaları silmek için:
git clean -f
7. Değişiklikleri Yanlışlıkla Silmek
Hata Açıklaması
Yanlışlıkla git reset --hard gibi bir komutla değişiklikleri silmek can sıkıcıdır.
Çözüm
Git, her commit'i sakladığı için reflog ile eski commit'lere dönebilirsiniz:
- Reflog'u Görüntüleyin:
git reflog
- Eski commit'e geri dönün:
git reset --hard commit_id
Özet: Yaygın Git Hataları ve Çözümleri
| Hata | Çözüm |
|---|---|
| Merge Conflict | Çakışan dosyayı düzenleyip commit yapın |
| Yanlış commit mesajı | git commit --amend ile mesajı düzenleyin |
| Yanlış branch'te çalışmak | git stash ile kaydedip doğru branch'e taşıyın |
| Yanlış commit'i geri almak | git revert veya git reset kullanın |
| Uzak depoya yanlış push yapmak | Branch'i silip --force ile düzeltilmiş commit'i gönderin |
| Untracked dosyaları temizlemek | git clean -f kullanarak temizleyin |
| Yanlışlıkla silinen değişiklikleri kurtarma | git reflog ile eski commit'e dönün |
Sonuç
Bu bölümde, Git kullanırken karşılaşabileceğiniz yaygın hataların çözümlerini öğrendiniz. Merge conflict'ler, yanlış commit'ler veya yanlış push işlemleri gibi sorunları artık kolayca çözebileceksiniz.
Bir sonraki adımda Git bilginizi proje pratikleriyle pekiştirebilir ve gerçek dünyada uygulayabilirsiniz!





