🔀 Merge & Conflict: Değişiklikleri Güvenle Birleştir
Merge & Conflict: Değişiklikleri: Bir Git merge işlemi, aynı olayı anlatan iki tanığın ifadesini uzlaştıran bir mahkeme stenografına benzer: hikayeleri çakışmadığı her yerde Git
Bir Git merge işlemi, aynı olayı anlatan iki tanığın ifadesini uzlaştıran bir mahkeme stenografına benzer: hikayeleri çakışmadığı her yerde Git otomatik birleştirir, ama iki kişi TAM OLARAK aynı satırı değiştirdiği anda tahmin etmeyi bırakır ve sana conflict marker'larını uzatır. Bir marker'a dokunmadan önce düşündürücü soru şu: Git çoğu zaman otomatik merge edebiliyorsa, neden geri kalanında seni durduruyor? Çünkü her satırda sana sorsaydı, kimse branch kullanmazdı — paralel branch'lerin bütün amacı çoğu değişikliğin aslında çakışmaması, bu yüzden araç sadece gerçekten insan kararı gerektiren o nadir noktada durmalı. Java benzetmesi: bu, iki geliştiricinin paylaşılan bir IDE'de kilit olmadan aynı class'ı düzenlemesiyle aynı gerilimdir — bir build aracı iki geliştiricinin işini SADECE farklı metodlara dokunduklarında otomatik birleştirebilir, aynı metodun gövdesini iki kişi override ettiğinde asla; tıpkı Git'in de sadece çakışmayan satırları otomatik merge edebilmesi gibi. Gerçek QA işinde bu yüzden bir conflict'i sessizce yanlış satırı tutarak çözmek, yüksek sesle patlayan bir build'den daha tehlikelidir — yanlış çözülmüş bir marker, yanlış nedenle her zaman geçen bir testi production'a gönderebilir ve kimse fark etmez.
3) Merge: main değişikliklerini branch içine al
`origin/main` güncellemelerinin feature branch içine akmasını izle. Ana fikir: merge, bulunduğun branch’in içine yapılır.
4) Conflict çözümü: markerlar karar noktasıdır
Conflict’in çıkmasını, markerların okunmasını, final dosyanın yazılmasını, testin koşmasını, resolved işaretini ve merge/rebase devamını izle.
main'i senkronize et, sonra branch aç
git pull --ff-only Neden "Sürpriz" Bir Merge Commit'i Engeller?
git fetch origin çalıştırıldığında…
git fetch origin çalıştırıldığında SADECE uzaktaki branch referansları (origin/main gibi) GÜNCELLENİR — local main dalın HİÇBİR satırı henüz DEĞİŞMEZ.
git switch main ile…
git switch main ile local main'e GEÇİLİR — artık sonraki komutlar main dalı ÜZERİNDE çalışır, feature branch'in ETKİLENMEZ.
git pull --ff-only origin main, SADECE…
git pull --ff-only origin main, SADECE local main'in origin/main'in TAM OLARAK GERİSİNDE (hiçbir kendi commit'i olmadan) olduğu durumda ÇALIŞIR — pointer'ı basitçe İLERİ SÜRÜKLER, yeni bir merge commit'i OLUŞTURMAZ.
Eğer local main'de kendi commit'lerin varsa…