EMZETT.
Giriş yap

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

  1. git status, “both modified” olan dosyaları gösterir.
  2. Dosyayı aç (VS Code Accept Current/Incoming Change düğmelerini gösterir).
  3. Çakışmayı çöz, <<<<<<<, =======, >>>>>>> işaretlerini kaldır.
  4. git add dosya
  5. git commit (birleştirme için) veya git rebase --continue (rebase için).
  6. İptal: git merge --abort veya git rebase --abort önceki durumu geri getirir. git mergetool ile 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