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
)
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!