Çakışmalar (Conflicts)

cakismalar-conflicts (büyük resim için tıklayın)

Çakışmalar (Conflicts)

İki branch'te de aynı dosyayı değiştirmiş olsaydık ne olurdu? Bir branch'te değişiklik yaparken, takım arkadaşınız farklı bir branch'te aynı dosyalarda değişiklik yapabiliyor. İşte bu durumlarda çakışma (conflicts) ortaya çıkıyor.

Örnek olarak buyuk-harf branch'inde lib.php dosyası boş olarak mevcut olsun. Bu dosyaya (branch geçişi yapıp)

  • echo strtoupper($param);

yazılsın ve commit edilsin. Sonrasında trim branch'inde lib.php dosyasını (trim branch'ine geçiş yapılsın)

  • echo strtoupper(trim($param));

olarak güncelleyelim ve değişiklikleri commit edelim. Görüldüğü üzere iki farklı branch'de aynı dosya (lib.php) üzerinde aynı satırı değiştirmiş olduk. Bu iki branch'i de master branch'ine aktarmaya (merge) çalışalım. master branch'ine geçiş yapılıp (git checkout master)

  • git merge trim

komutu kullanılsın. Sonrasında da buyuk-harf branch'ini merge edelim.

  • git merge buyuk-harf

İşte tam bu noktada çakışma hatası alınmış olacak ve otomatik birleştirme (automatic merge) edilemeyecek. lib.php dosyası incelenecek olduğunda <<<<<<< HEAD kod bloğu ======= kod bloğu >>>>>>> içeriği görüntülenecek.

  •  <<<<<<< HEAD ile ======= arasındaki kısım master branch'in şu anki halini gösterir,  
  • ======= ile >>>>>>> arasındaki kısım ise buyuk-harf (yani merge etmek istediğimiz ve sonrasında hata aldığımız) branch'indeki halini gösterir. 

Bu noktada manuel bir birleştirme yapmamız gerekiyor. Kodları inceleyip, işaretleri (<, =, >) silip dosyamızı istediğimiz hale getirdikten sonra çakışma (conflicts) çözülmüş olacak. Tabii sonrasında 

  • git add lib.php 
  • git commit -m “cakisma halledildi”

komutlarını kullanmayı unutmuyoruz.

omurserdarr

Ömürcan Serdar, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Beğeni