Merge conflict nedir ve nasıl çözülür?
Cevap
Merge conflict, iki dalda aynı dosyanın aynı satırları farklı şekilde değiştirildiğinde (veya biri silip diğeri değiştirdiğinde) Git'in hangisini alacağına otomatik karar verememesidir.
git merge feature/odeme
# CONFLICT (content): Merge conflict in src/cart.js
git status # çakışan dosyaları gösterirDosyada işaretler görünür:
<<<<<<< HEAD
const vergi = 0.18;
=======
const vergi = 0.20;
>>>>>>> feature/odemeÇözüm adımları
- Çakışan dosyaları açın, iki tarafın amacını anlayın. Çoğu zaman doğru cevap ikisini birleştirmektir, birini seçmek değil.
- İşaretleri kaldırıp doğru kodu bırakın.
- Testleri çalıştırın; derlenen kod doğru kod demek değildir.
git add src/cart.jsile çözüldü olarak işaretleyin.git commit(merge) veya rebase sırasındaysagit rebase --continue.
İşler karışırsa git merge --abort veya git rebase --abort ile başa dönülür.
Çakışmaları azaltmak
- Küçük ve kısa ömürlü dallar,
main'i düzenli olarak dala çekmek. - Formatlayıcı (Prettier) kullanmak: biçim farkları gereksiz çakışma yaratmaz.
- Büyük refactor'ları ekiple koordine etmek.
İlgili Git soruları
- git merge ile git rebase arasındaki fark nedir?
- git reset ile git revert arasındaki fark nedir?
- İyi bir code review nasıl yapılır? .gitignore'a neler eklenmelidir?
- Interactive rebase ile commit'leri nasıl düzenler ve squash edersiniz?
- git cherry-pick ve git stash ne işe yarar? Hangi durumlarda kullanılır?
- GitFlow ile trunk-based development arasındaki fark nedir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.