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 kullanırken "CONFLICT" hatası mı aldınız? Panik yapmayın! Bu, yazılım geliştirmede en sık karşılaşılan durumlardan biri. Alesta Web olarak Git merge conflict çözümünü (how to fix git merge conflict) adım adım anlatıyoruz. 5 dakikada bu sorunu çözeceksiniz.
Git'te merge conflict, iki farklı branch'te aynı dosyanın aynı satırları değiştirildiğinde ortaya çıkar. Git, hangi değişikliği tutacağına karar veremez ve sizden yardım ister. Alesta Web ekibi olarak günde ortalama 3-4 conflict çözüyoruz - bu gayet normal!
$ 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.
Merge conflict bir hata değil, Git'in normal davranışıdır (normal Git behavior). İki kişi aynı yeri değiştirdiğinde Git, hangisinin doğru olduğunu bilemez ve sizi hakem olarak atar.
Alesta Web deneyimlerine göre en yaygın sebepler:
| Sebep (Cause) | Açıklama (Description) |
|---|---|
| Aynı satır değişikliği | İki branch aynı satırı farklı şekilde değiştirmiş |
| Dosya silme/değiştirme | Bir branch dosyayı silmiş, diğeri değiştirmiş |
| Uzun süreli branch | Feature branch çok uzun süre main'den ayrı kalmış |
| Yetersiz iletişim | Ekip üyeleri aynı dosya üzerinde çalışmış |
Conflict olduğunda dosyalarda özel işaretler görürsünüz:
// src/app.js dosyası
function selamla(isim) {
<<<<<<< HEAD
return "Merhaba, " + isim + "!";
=======
return `Selam ${isim}!`;
>>>>>>> feature-branch
}
<<<<<<< HEAD → Şu anki branch'teki değişiklik (your current changes)======= → İki değişiklik arasındaki ayırıcı (separator)>>>>>>> feature-branch → Merge edilmeye çalışılan branch'teki değişiklik (incoming changes)Alesta Web'in önerdiği 5 adımlı çözüm süreci:
# Conflict durumunu kontrol et
git status
# Çıktı:
# Unmerged paths:
# both modified: src/app.js
# both modified: src/utils.js
// ÖNCE (conflict var)
function selamla(isim) {
<<<<<<< HEAD
return "Merhaba, " + isim + "!";
=======
return `Selam ${isim}!`;
>>>>>>> feature-branch
}
// SONRA (conflict çözüldü - istediğinizi seçin veya birleştirin)
function selamla(isim) {
return `Merhaba, ${isim}!`; // En iyi çözümü seçtik
}
Tüm <<<<<<<, =======, >>>>>>> işaretlerini sildiğinizden emin olun!
# Çözülen dosyayı stage et
git add src/app.js
# Veya tüm çözülen dosyaları
git add .
# Merge commit oluştur
git commit -m "Resolve merge conflict in app.js"
# Veya varsayılan mesajla
git commit
Artık merge tamamlandı. git log ile merge commit'i görebilirsiniz.
VS Code, conflict çözümünü çok kolaylaştırır. Alesta Web ekibi genelde bu yöntemi kullanıyor:
Dosyayı VS Code'da açtığınızda şu seçenekleri göreceksiniz:
┌─────────────────────────────────────────────┐
│ Accept Current Change (Mevcut değişiklik)
│ Accept Incoming Change (Gelen değişiklik)
│ Accept Both Changes (İkisini de al)
│ Compare Changes (Karşılaştır)
└─────────────────────────────────────────────┘
VS Code'un "Source Control" panelinden (Ctrl+Shift+G) tüm conflict'leri tek tek görebilir ve çözebilirsiniz. Ayrıca git mergetool komutuyla GUI araç da kullanabilirsiniz.
Conflict çözmeye hazır değilseniz, merge'i tamamen iptal edebilirsiniz:
# Merge'i iptal et ve önceki duruma dön
git merge --abort
# Bu komut:
# - Tüm conflict değişikliklerini geri alır
# - Working directory'yi merge öncesi haline döndürür
# - Sanki hiç merge denemesi olmamış gibi
git merge --abort sadece merge henüz tamamlanmadıysa çalışır. Commit ettiyseniz farklı yöntemler gerekir (revert veya reset).
Alesta Web olarak conflict'leri minimize etmek için şu pratikleri uyguluyoruz:
git pull origin main - her gün en az bir kezgit rebase main daha temiz geçmiş sağlar# Her sabah işe başlamadan:
git checkout main
git pull origin main
git checkout feature-branch
git merge main # veya: git rebase main
# Bu sayede conflict'ler küçük ve yönetilebilir kalır
Bu makalede kullanılan bilgiler aşağıdaki güvenilir kaynaklardan derlenmiştir:
Alesta Web olarak tüm komutları test ettik ve doğruladık.
Git merge conflict'leri korkutucu görünebilir ama aslında çok basit. Alesta Web olarak bu rehberin işinize yaramasını umuyoruz.
Hızlı Özet / Quick Summary:
git status ile conflict'leri bul (find conflicts)git add ile stage et (stage files)git commit ile tamamla (commit)git merge --abortFaydalı Linkler / Useful Links:
© 2025 AlestaWeb - Tüm hakları saklıdır.