Önce durumu kontrol ediyorum:
git status
git diffÇatışan dosyada şu işaretler görünür:
<<<<<<< HEAD
mevcut daldaki kod
=======
birleştirilen daldaki kod
>>>>>>> feature/loginBurada 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
git add app/Auth.php
git commitBirleştirmeye yanlış daldan başladıysanız ve henüz tamamlamadıysanız işlemi geri almak mümkün:
git merge --abortBu 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