Git: Birleştirme çakışmasını çözme
Kısaca: Birleştirme çakışması, iki değişiklik aynı yeri etkilediğinde ortaya çıkar; Git yeri işaretler ve hangi sürümün geçerli olacağına sen karar verirsin.
Biraz daha ayrıntılı: Mesaj: CONFLICT (content): Merge conflict in file.txt ve Automatic merge failed; fix conflicts and then commit the result. Git iki değişikliği, farklı yerleri etkiledikleri sürece otomatik birleştirebilir. İkisi de aynı satırlara dokunursa bir insanın karar vermesi gerekir.
Ayrıntılı
Çakışma nasıl görünür
<<<<<<< HEAD
Display in blue
=======
Display in green
>>>>>>> feature/colour
<<<<<<< ile ======= arasında senin sürümün (HEAD), ======= ile >>>>>>> arasında diğeri bulunur. Çözmek için: bir varyantı seç, ikisini karıştır veya yeniden yaz, sonra tüm işaretleri sil.
Çözümler
git status, “both modified” olan dosyaları gösterir.- Dosyayı aç (VS Code Accept Current/Incoming Change düğmelerini gösterir).
- Çakışmayı çöz,
<<<<<<<,=======,>>>>>>>işaretlerini kaldır. git add dosyagit commit(birleştirme için) veyagit rebase --continue(rebase için).- İptal:
git merge --abortveyagit rebase --abortönceki durumu geri getirir.git mergetoolile grafik bir araç açılır.
Önlemek
- Ana dalla sık eşitle (
git pull,git merge main), böylece farklar küçük kalır. - Küçük, kısa ömürlü dallar ve küçük commit’ler.
- Ekipte kimin hangi dosyalarda çalıştığını kararlaştır.
- Boşluk çakışmaları çıkmaması için biçimlendiricileri tutarlı kullan.
- Çözdükten sonra test et: bir çakışma mantıken yanlış ama sözdizimi açısından geçerli koda yol açabilir.
İkili dosyalarda veya kilit dosyalarında (
package-lock.json) çoğu zaman şu yardımcı olur: bir tarafı seç ve yeniden oluştur.
Ayrıca bak: Git: not a git repository