Kavramın hikâyesi
Önce iş karşılığını gör, gerektiğinde bağlamı aç.
İlk taramaİşte karşılaşacağın sinyaller
Gerilim ve çözüm · Bölüm 01
Hangi problemi çözer?
Conflict mekanizması Git'in belirsiz bir durumda sessizce taraf seçmesini önler. Kullanıcıya iki tarafı ve çözülmemiş yolları göstererek hedef içeriği bilinçli biçimde oluşturma fırsatı verir.
Tam bağlamı açGerekçe, sınırlar ve kalan ayrıntı
Bu mekanizma iş davranışının doğru olduğunu doğrulamaz; yalnızca otomatik birleştirmenin sınırını görünür kılar.
Gerçek hayat · Bölüm 02
Gerçek iş senaryosu
SCN-003 bağlamında junior, review düzeltmelerini kendi branch'ine ekledikten sonra hedef branch'teki güncel değişiklikleri entegre eder.
Tam bağlamı açGerekçe, sınırlar ve kalan ayrıntı
Git işlemi durur. Önce git status ile hangi dosyaların unmerged olduğunu ve hangi işlemin sürdüğünü kontrol eder. Marker'ların iki tarafını, ilgili commitleri ve beklenen ürün davranışını inceler; gerektiğinde değişikliğin diğer yazarıyla konuşur. Doğru birleşik içeriği yazar, marker'ları kaldırır, ilgili testleri çalıştırır, dosyayı git add ile resolved olarak işaretler ve Git'in merge veya rebase için verdiği doğru devam adımını uygular.
Duyacağın bağlam · Bölüm 03
Ekipte bunu nasıl duyabilirsin?
Temsili ekip konuşması: “Bu dosyada iki taraf da aynı doğrulama akışını değiştirmiş. ours ya da theirs diye kör seçim yapmadan iki commit'in niyetini kontrol edip birleşik davranışı test edelim.”
Beklenti seviyesi · Bölüm 04
Junior hangi seviyede bilmeli?
- Tanı:
CONFLICT, unmerged paths ve<<<<<<<,=======,>>>>>>>marker'larının çözülmemiş entegrasyon durumu olduğunu fark eder. - Açıkla: Git'in neden bazı değişiklikleri otomatik birleştirip bazılarını kullanıcıya bıraktığını ve conflict'in neden Pull Request'a özgü olmadığını anlatır.
- Uygula: Devam eden işlemi ve çakışan dosyaları belirler; iki niyeti karşılaştırır; küçük bir content conflict'i düzenleyip test eder,
git addile işaretler ve doğru işleme devam eder ya da yardım ister. - Şimdilik bilmesi gerekmeyen: Merge strategy ayarlamak, index stage'lerini plumbing komutlarıyla incelemek ve karmaşık rename/submodule conflict'lerini tek başına çözmek.
İhtiyacın kökeni · Bölüm 05
Neden ortaya çıktı?
Branch'lerdeki development history farklılaştığında Git ortak geçmişten sonra yapılan değişiklikleri bir araya getirir. Değişiklikler çakışmıyorsa bunu otomatik yapabilir.
Tam bağlamı açGerekçe, sınırlar ve kalan ayrıntı
Aynı bölge için iki farklı sonuç bulunduğunda ise hangi niyetin korunacağına kod bağlamını bilmeden karar veremez ve işlemi durdurur.
Ekip etkisi · Bölüm 06
Şirketler neden kullanır?
Merge Conflict ekiplerin seçtiği bir özellikten çok, farklı Git history'leri entegre edilirken karşılaşabilecekleri bir durumdur.
Tam bağlamı açGerekçe, sınırlar ve kalan ayrıntı
Ekipler conflict'i kimin çözeceği, hangi testlerin çalıştırılacağı ve ne zaman yardım isteneceği için farklı kurallar kullanabilir. Branch ömrü ve güncelleme sıklığı conflict maliyetini etkileyebilir; tek bir branch politikası bütün şirketler için doğru diye sunulmamalıdır.
Karar alanı · Bölüm 07
Trade-off ve bağlam
Sık güncellenen, küçük değişiklikler conflict başına incelenecek kapsamı azaltabilir; fakat conflict'i tamamen engellemez.
Tam bağlamı açGerekçe, sınırlar ve kalan ayrıntı
Otomatik olarak temiz merge edilen kod da davranışsal olarak uyumsuz olabilir. Conflict çözümünde hızlıca tek tarafı seçmek veri veya davranış kaybına yol açabilir. Abort seçeneği güvenli bir geri dönüş yolu sağlayabilir, ancak Git resmî dokümantasyonu merge öncesi kaydedilmemiş değişikliklerin geri kurulmasını zorlaştırabileceği konusunda uyarır.
Yanılgı radarı · Bölüm 08
Yaygın yanlış anlamalar
- “İki kişi aynı dosyayı değiştirdiyse conflict kesin oluşur.” Yanlış; farklı bölgeler otomatik birleşebilir.
- “Merge Conflict yalnızca Pull Request sayfasında oluşur.” Yanlış; Git merge ve rebase gibi yerel işlemlerde de oluşabilir.
- “Marker'ları silince conflict doğru çözülmüş olur.” Eksik; hedef davranış oluşturulmalı, dosya resolved olarak işaretlenmeli ve sonuç doğrulanmalıdır.
- “Her conflict'te
oursgüvenli seçimdir.” Yanlış; doğru sonuç değişiklik niyetine bağlıdır ve rebase bağlamında taraf adları ayrıca şaşırtıcı olabilir. - “Conflict varsa Git bozulmuştur.” Yanlış; Git belirsiz bir sonucu kullanıcıya bırakarak değişiklik kaybını önlemeye çalışır.
- “Conflict çıkmadıysa entegrasyon doğrudur.” Yanlış; metinsel birleşme iş davranışını veya test sonucunu garanti etmez.
Gerilim ve çözüm1. bölüm

