Ulaşım
- Adres:Batıkent Mh. 8910 Sk. 6. Etap 1H No: 18 Yeni Toki Eyyübiye / Şanlıurfa (Yeni Alım Satım Karşısı)
- Telefon:0 (545) 528 88 93
- eMail: info@alestaweb.com
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.
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.
$ 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.
<<<<<<< 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 sonuMerge conflict'ler şu durumlarda oluşur:
# 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?"
# 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?"
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.
Alesta Web olarak terminal kullanımını en temel yöntem olarak görüyoruz. İşte adım adım çözüm:
# 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
# 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!
# Düzenlenen dosyayı staging area'ya ekle
git add src/app.js
# Tüm çözülen dosyaları ekle
git add .
# Commit oluştur
git commit -m "Merge feature-branch: resolve conflicts in app.js"
# veya sadece (Git otomatik mesaj oluşturur)
git commit
Merge conflict başarıyla çözüldü. git log ile merge commit'i görebilirsiniz.
# İş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, merge conflict çözümü için mükemmel araçlar sunuyor:
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:
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
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, görsel Git client'ı olarak conflict çözümünü kolaylaştırır:
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.
Pull Request'lerdeki conflict'leri GitHub arayüzünden de çözebilirsiniz:
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
GitHub web editörü basit conflict'ler için uygundur. Karmaşık conflict'lerde (multiple files, complex changes) lokal çözüm daha güvenlidir.
Alesta Web olarak yıllardır büyük ekiplerle çalışıyoruz. İşte conflict'leri minimize etmek için önerilerimiz:
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
# 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
rerere (reuse recorded resolution) açıkken Git, daha önce çözdüğünüz conflict'leri hatırlar ve aynı conflict tekrar oluşursa otomatik çözer!
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.
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ıngit add ve git commit yapınFaydalı Linkler / Useful Links:
© 2026 AlestaWeb - Tüm hakları saklıdır. | Git Merge Conflict Çözüm Rehberi