Forum
Soru Sor

titantonnyKullanıcı·24.06.2026 22:33

Git Merge Conflict Nasıl Çözülür? Dosya Kaybetmeden Güvenli Yöntem

2 görüntülenme 0 beğeni 0 cevap
Git merge conflict ilk görüldüğünde sanki dosyalar bozulmuş gibi duruyor, fakat aslında Git aynı satırlardaki iki farklı değişiklik için kararı geliştiriciye bırakıyor. Panikle dosyayı silmek veya zorla reset atmak yerine çatışmanın hangi dallar arasında oluştuğunu anlamak gerekiyor.

Önce durumu kontrol ediyorum:

bash
git status
git diff


Çatışan dosyada şu işaretler görünür:

text
<<<<<<< HEAD
mevcut daldaki kod
=======
birleştirilen daldaki kod
>>>>>>> feature/login


Burada yalnızca üst veya alt tarafı seçmek zorunda değilsiniz. İki değişikliği birleştirip ortaya doğru üçüncü bir sonuç çıkarabilirsiniz. Önemli olan işaret satırlarını temizlemek ve kodun çalıştığını test etmek.

Benim izlediğim sıra:

- `git status` ile tüm çatışan dosyaları listelemek
- Her dosyada değişikliğin amacını anlamak
- Gerekirse commit geçmişine bakmak
- Doğru kodu elle düzenlemek
- Test ve linter çalıştırmak
- Çözülen dosyayı `git add` ile işaretlemek
- Tüm çatışmalar bitince merge commit’ini tamamlamak

bash
git add app/Auth.php
git commit


Birleştirmeye yanlış daldan başladıysanız ve henüz tamamlamadıysanız işlemi geri almak mümkün:

bash
git merge --abort


Bu komut çalışma alanını merge öncesi duruma döndürmeye çalışır. Yine de merge öncesinde commit edilmemiş değişiklik bırakmamak en güvenlisi. İşe başlamadan `git status` kontrolü ve küçük commitler conflict çözümünü kolaylaştırıyor.

VS Code gibi editörler “Accept Current”, “Accept Incoming” ve “Accept Both” seçenekleri sunuyor. Bunlar hızlı ama değişikliğin anlamını bilmeden tıklamak kod kaybına yol açabilir. “Current” ve “incoming” ifadeleri rebase sırasında beklediğinizden farklı hissedilebilir; diff’i okumak şart.

Büyük conflictleri azaltmak için uzun süre güncellenmeyen feature branch tutmamak, sık sık ana dalı almak ve aynı dosyada dev değişiklikleri tek committe yapmamak faydalı.

Conflict çözüldükten sonra yalnızca dosyanın derlenmesine değil, iki branch’in davranışının birlikte korunmasına bakmak gerekiyor. Bir tarafta validation eklenmişken diğer tarafta fonksiyon imzası değişmiş olabilir; satırları yan yana koymak mantıksal hatayı çözmez. İlgili commit mesajlarını ve pull request açıklamalarını okumak, kodu yazan kişilerle kısa bir görüşme yapmak bazen en hızlı yoldur.

Siz conflict çözmek için terminal mi, VS Code mu kullanıyorsunuz? En çok package lock dosyalarında mı yoksa uygulama kodunda mı sorun yaşıyorsunuz?

Cevaplar

0 yanıt
Bu konuda henüz cevap yok.