Git Merge Conflict Nasıl Çözülür? Terminal, VS Code, GitKraken Rehberi (2026)

13.01.2026 14:10 Haber

Git merge yaparken korkunç "CONFLICT" mesajı mı çıktı? Panik yapmayın! Merge conflict'ler (birleştirme çakışmaları) günlük yazılım geliştirmenin doğal bir parçası. Alesta Web olarak bu kapsamlı rehberde Git merge conflict'leri nasıl çözeceğinizi (how to resolve merge conflicts) adım adım gösteriyoruz.

Merge Conflict Nedir? (What is a Merge Conflict?)

Git, iki branch'i birleştirirken (merge) aynı dosyanın aynı satırlarında farklı değişiklikler görürse ne yapacağını bilemez. İşte bu duruma merge conflict denir.

Tipik Conflict Mesajı / Typical Conflict Message

$ git merge feature-branch
Auto-merging src/app.js
CONFLICT (content): Merge conflict in src/app.js
Automatic merge failed; fix conflicts and then commit the result.

Alesta Web olarak şunu söyleyebiliriz: Conflict görmek kötü bir şey değil! Bu, Git'in "Bak, burada farklı değişiklikler var, hangisini istediğine sen karar ver" demesi.

Conflict İşaretleri / Conflict Markers

<<<<<<< HEAD
// Mevcut branch'teki kod (your current branch)
const greeting = "Merhaba Dünya";
=======
// Gelen branch'teki kod (incoming branch)
const greeting = "Hello World";
>>>>>>> feature-branch

Bu işaretlerin anlamı:

  • <<<<<<< HEAD - Mevcut branch'inizdeki (current branch) değişikliğin başlangıcı
  • ======= - İki değişiklik arasındaki sınır (divider)
  • >>>>>>> feature-branch - Gelen branch'teki (incoming branch) değişikliğin sonu

Neden Çakışma Oluşur? (Why Do Conflicts Happen?)

Merge conflict'ler şu durumlarda oluşur:

Senaryo 1: Aynı Satır Değişikliği

# Developer A (main branch):
function sayHello() {
  return "Merhaba";  // Satır 2'yi değiştirdi
}

# Developer B (feature branch):
function sayHello() {
  return "Hello";    // Aynı satır 2'yi değiştirdi
}

# Git: "İkisi de satır 2'yi değiştirmiş, hangisini alayım?"

Senaryo 2: Dosya Silme/Düzenleme

# Developer A: config.js dosyasını sildi
git rm config.js

# Developer B: config.js dosyasını düzenledi
# config.js içinde değişiklik yaptı

# Git: "Bir kişi silmiş, bir kişi düzenlemiş, ne yapayım?"
? Bilgi / Info:

Farklı dosyalardaki değişiklikler conflict oluşturmaz. Aynı dosyanın farklı satırlarındaki değişiklikler de genellikle otomatik birleştirilir. Conflict sadece aynı satırlarda değişiklik olduğunda oluşur.

Terminal ile Çözüm (Command Line Solution)

Alesta Web olarak terminal kullanımını en temel yöntem olarak görüyoruz. İşte adım adım çözüm:

Adım 1: Conflict'li Dosyaları Listele

# Hangi dosyalarda conflict var?
git status

# Çıktı örneği:
# On branch main
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Unmerged paths:
#   (use "git add ..." to mark resolution)
#   both modified:   src/app.js
#   both modified:   src/config.js

Adım 2: Dosyayı Aç ve Düzenle

# Conflict'li dosyayı aç (örn: vim, nano, veya favori editörünüz)
vim src/app.js

# Dosya içeriği şöyle görünecek:
<<<<<<< HEAD
const message = "Merhaba Dünya";
=======
const message = "Hello World";
>>>>>>> feature-branch

# İstediğiniz versiyonu bırakın, conflict işaretlerini silin:
const message = "Merhaba World";  // Her iki değişikliği birleştirdik!

Adım 3: Çözümü Stage'e Al

# Düzenlenen dosyayı staging area'ya ekle
git add src/app.js

# Tüm çözülen dosyaları ekle
git add .

Adım 4: Merge'i Tamamla

# Commit oluştur
git commit -m "Merge feature-branch: resolve conflicts in app.js"

# veya sadece (Git otomatik mesaj oluşturur)
git commit
✅ Tamamlandı! (Done!)

Merge conflict başarıyla çözüldü. git log ile merge commit'i görebilirsiniz.

Bonus: Merge'i İptal Et (Abort Merge)

# İşler karıştıysa merge'den çık
git merge --abort

# Bu komut merge işlemini iptal eder ve
# merge öncesi duruma geri döner

VS Code ile Çözüm (VS Code Solution)

VS Code, merge conflict çözümü için mükemmel araçlar sunuyor:

VS Code Conflict Arayüzü

Conflict'li dosyayı açtığınızda VS Code şunları gösterir:

┌─────────────────────────────────────────────────┐
│ Accept Current Change | Accept Incoming Change  │
│ Accept Both Changes   | Compare Changes         │
├─────────────────────────────────────────────────┤
│ <<<<<<< HEAD (Current Change)                   │
│ const message = "Merhaba Dünya";                │
│ =======                                         │
│ const message = "Hello World";                  │
│ >>>>>>> feature-branch (Incoming Change)        │
└─────────────────────────────────────────────────┘

Alesta Web olarak en çok kullandığımız VS Code özellikleri:

  • Accept Current Change: Mevcut branch'teki değişikliği kabul et
  • Accept Incoming Change: Gelen branch'teki değişikliği kabul et
  • Accept Both Changes: Her iki değişikliği de al (dikkatli kullanın!)
  • Compare Changes: İki değişikliği yan yana karşılaştır

VS Code Source Control Panel

1. Sol menüden Source Control'e tıkla (Ctrl+Shift+G)
2. "Merge Changes" bölümünde conflict'li dosyaları gör
3. Dosyaya tıkla ve 3-way merge editor'ü aç
4. Değişiklikleri seç veya manuel düzenle
5. "Complete Merge" butonuna tıkla
6. Commit oluştur
? VS Code İpucu / VS Code Tip:

GitHub Copilot aboneliğiniz varsa, VS Code artık AI destekli conflict çözümü sunuyor! Copilot, her iki değişikliği analiz edip en mantıklı birleştirmeyi önerebilir.

GitKraken ile Çözüm (GitKraken Solution)

GitKraken, görsel Git client'ı olarak conflict çözümünü kolaylaştırır:

GitKraken Merge Tool

1. Merge işleminde conflict oluştuğunda GitKraken uyarı verir
2. Conflict'li dosyaya tıklayın
3. 3 panelli merge tool açılır:
   - Sol panel: Current branch (HEAD)
   - Sağ panel: Incoming branch
   - Alt panel: Output (sonuç)
4. Her satır için checkbox'ları kullanarak seçim yapın
5. "Save" ve sonra "Mark as Resolved" tıklayın
6. Commit oluşturun

GitKraken'ın avantajı: Değişiklikleri görsel olarak görebilir ve satır satır seçim yapabilirsiniz.

GitHub Web ile Çözüm (GitHub Web Solution)

Pull Request'lerdeki conflict'leri GitHub arayüzünden de çözebilirsiniz:

GitHub Conflict Editor

1. Pull Request sayfasına gidin
2. "This branch has conflicts" uyarısını görün
3. "Resolve conflicts" butonuna tıklayın
4. Web editöründe conflict işaretlerini düzenleyin
5. "Mark as resolved" tıklayın
6. "Commit merge" ile kaydedin
⚠️ Dikkat / Warning:

GitHub web editörü basit conflict'ler için uygundur. Karmaşık conflict'lerde (multiple files, complex changes) lokal çözüm daha güvenlidir.

Çakışmaları Önleme (Preventing Conflicts)

Alesta Web olarak yıllardır büyük ekiplerle çalışıyoruz. İşte conflict'leri minimize etmek için önerilerimiz:

En İyi Pratikler / Best Practices

1. Sık Pull Yapın
   git pull origin main
   # Ana branch'i sık sık çekin, küçük conflict'ler büyümeden çözün

2. Küçük, Odaklı Branch'ler
   # Büyük feature branch'ler yerine küçük, kısa ömürlü branch'ler
   # 1-2 günde merge edilebilecek boyutta tutun

3. İletişim
   # Aynı dosya üzerinde çalışacaksanız takım arkadaşlarınızla konuşun
   # "Ben config.js üzerinde çalışıyorum" demek conflict'leri önler

4. Merge Öncesi Rebase
   git fetch origin
   git rebase origin/main
   # Bu, conflict'leri merge yerine rebase sırasında çözer

Git Config Ayarları

# Daha iyi diff algoritması kullan
git config --global diff.algorithm histogram

# Merge conflict stilini değiştir (diff3 daha fazla bilgi verir)
git config --global merge.conflictstyle diff3

# Rerere: Aynı conflict'i tekrar çözme
git config --global rerere.enabled true
? Pro Tip:

rerere (reuse recorded resolution) açıkken Git, daha önce çözdüğünüz conflict'leri hatırlar ve aynı conflict tekrar oluşursa otomatik çözer!

? Kaynaklar ve Referanslar / Sources and References

Bu makalede kullanılan bilgiler aşağıdaki güvenilir kaynaklardan derlenmiştir:

Alesta Web olarak tüm yöntemleri test ettik ve doğruladık.

✅ Conflict Çözüldü! (Conflict Resolved!)

Artık Git merge conflict'lerden korkmayın! İster terminal, ister VS Code, ister GitKraken kullanın - Alesta Web olarak gösterdiğimiz yöntemlerle her conflict'i çözebilirsiniz.

Hızlı Özet / Quick Summary:

  • <<<<<<<, =======, >>>>>>> işaretlerini anlayın
  • ✅ İstediğiniz değişikliği seçin veya birleştirin
  • ✅ Conflict işaretlerini silin
  • git add ve git commit yapın
  • ✅ Sık pull yaparak büyük conflict'leri önleyin

Faydalı Linkler / Useful Links:

© 2026 AlestaWeb - Tüm hakları saklıdır. | Git Merge Conflict Çözüm Rehberi

WM Tools
💫

WebMaster Tools

15 Profesyonel Araç