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österir

Dosyada işaretler görünür:

<<<<<<< HEAD
const vergi = 0.18;
=======
const vergi = 0.20;
>>>>>>> feature/odeme

Çözüm adımları

  1. Ç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.
  2. İşaretleri kaldırıp doğru kodu bırakın.
  3. Testleri çalıştırın; derlenen kod doğru kod demek değildir.
  4. git add src/cart.js ile çözüldü olarak işaretleyin.
  5. git commit (merge) veya rebase sırasındaysa git 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.
  1. git merge ile git rebase arasındaki fark nedir?OrtaGitFull Stack
  2. git reset ile git revert arasındaki fark nedir?OrtaGitFull Stack
  3. İyi bir code review nasıl yapılır? .gitignore'a neler eklenmelidir?KolayGitFull Stack
  4. Interactive rebase ile commit'leri nasıl düzenler ve squash edersiniz?ZorGitFull Stack
  5. git cherry-pick ve git stash ne işe yarar? Hangi durumlarda kullanılır?OrtaGitFull Stack
  6. GitFlow ile trunk-based development arasındaki fark nedir?OrtaGitFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle