ตัวอย่างบทเรียน

Birleştirme Çakışmaları: Panik Yapmayın — Anlayın ve Çözün

Çakışmalar yeni başlayanları korkutur, ancak bu bölümden sonra onları sakinlikle karşılayacaksınız. Çakışmaların neden oluştuğunu (Git zihin okuyamaz — hangi değişikliğin daha önemli olduğunu bilemez), çakışma işaretleyicilerinin nasıl okunacağını ve doğru çözümün nasıl seçileceğini inceleyeceğiz. İki yaklaşım göstereceğiz: manuel çözüm ve birleştirme araçlarını kullanma.

birleştirme çakışması çakışma işaretleyicileri çakışma çözümü
คุณจะเรียนรู้อะไรในบทเรียนนี้
  • Birleştirme çakışmalarının doğasını anlayacak ve onlardan korkmayı bırakacaksınız — artık öngörülebilir hale gelecekler.
  • Git işaretleyicilerini doğru okuyarak bir çakışmayı kendi başınıza manuel olarak çözebileceksiniz.
  • Editörünüzde görsel çakışma çözümü için bir birleştirme aracı yapılandırmayı öğreneceksiniz.

จุดเริ่มต้นของบทเรียน

Üç Tür Birleştirme Çakışması

  • İçerik: Aynı satırlardaki değişiklikler
  • Yeniden Adlandırma: Dosya düzenlenmiş ve yeniden adlandırılmış
  • Silme: Dosya bir daldan silinmiş, diğerinde değiştirilmiş
  • Yeniden adlandırmalar Git için en zorlu olanlardır
  • Şüpheli çakışmalarda dosya geçmişini kontrol edin

Önemli bir proje üzerinde çalıştığınızı ve aniden Git'in bir çakışma bildirdiğini hayal edin. Çözüme giden ilk adım, türünü anlamaktır. İçerik çakışmaları, farklı dallarda aynı satırlarda değişiklikler yapıldığında ortaya çıkar. Yeniden adlandırmalar daha karmaşıktır: bir geliştirici dosyanın adını değiştirirken, diğeri aynı anda içeriğini düzenler. Üçüncü tür ise, bir dosyanın bir dalda kaybolup diğerinde var olmaya devam ettiği silmelerdir. Özellikle yeniden adlandırmalar sıklıkla zorluk çıkarır çünkü Git, ad değişikliğinden sonra dosya geçmişini her zaman doğru bir şekilde takip edemez. Bu nedenle, şüpheli çakışmalarda her zaman dosyaların değişiklik geçmişini kontrol edin.

Karmaşık Bir Çakışmanın Anatomisi

  • <<<<<<< işaretleyicileri sizin değişikliklerinizi gösterir
  • ======= sizin ve diğerinin sürümlerini ayırır
  • >>>>>>> çakışma bloğunun sonunu işaret eder
  • git status tüm sorunlu dosyaları gösterecektir
  • git diff - değişikliklerin ayrıntılı karşılaştırması

Feature dalını main ile birleştirdiğinizi ve bir çakışma mesajı gördüğünüzü varsayalım. Sorunlu dosyaları açın - özel işaretleyiciler fark edeceksiniz. <<<<<<< HEAD ile ======= arasındaki her şey sizin değişikliklerinizdir. ======= ile >>>>>>> feature arasındaki her şey ise birleştirilen daldaki değişikliklerdir. Tüm çakışan dosyaları görmek için git status'u, farkları ayrıntılı olarak görmek için ise git diff'i kullanın. Unutmayın: işaretleyiciler bir hata değil, bir karar vermeniz gereken yere dair bir ipucudur.

#!/bin/bash
# conflict_analysis.sh

echo "Test deposu oluşturuluyor"
mkdir conflict-demo && cd conflict-demo
git init

echo "Dosya oluşturuluyor ve main'e ilk commit"
echo 'Satır 1' > file.txt
echo 'Satır 2' >> file.txt
git add . && git commit -m 'İlk commit'

echo "Feature dalı oluşturuluyor ve ilk satır değiştiriliyor"
git checkout -b feature
sed -i 's/Satır 1/Feature dalında değiştirilen Satır 1/' file.txt
git commit -am 'Feature dalında Satır 1 değiştirildi'

echo "Main'e dönülüyor ve aynı satır değiştiriliyor"
git checkout main
sed -i 's/Satır 1/Main dalında değiştirilen Satır 1/' file.txt
git commit -am 'Main dalında Satır 1 değiştirildi'

echo "Dallar birleştirilmeye çalışılıyor"
git merge feature || echo 'Çakışma!'

echo "\nDurum kontrol ediliyor:"
git status --short

echo "\nÇakışan dosya gösteriliyor:"
cat file.txt

Çakışma Çözüm Stratejileri

  • Manuel düzenleme: İşaretleyicileri kaldırın, gerekli olanı bırakın
  • GUI araçları: meld, kdiff3 ile görsel karşılaştırma
  • --ours/--theirs: Kendi veya başkasının sürümünü kabul edin
  • Rebase sırasında çakışmalar her commit için çözülür
  • Çözümden sonra git add ve git commit yapmayı unutmayın

Bir çakışma keşfedildiğinde, birkaç yolunuz vardır. İşaretleyicileri kaldırarak ve gerekli kodu bırakarak dosyayı manuel olarak açıp düzenleyebilirsiniz. Görsel odaklılar için meld veya kdiff3 gibi araçlar uygundur - bunlar dosyanın üç sürümünü aynı anda gösterir. Kendi değişikliklerinizden eminseniz, kendi sürümünüzü tutmak için git checkout --ours veya başkasınınkini tutmak için --theirs kullanın. Özellikle rebase sırasında dikkatli olun: burada çakışmalar yeniden temellenen her commit'te ortaya çıkabilir.

#!/bin/bash
# resolve_strategies.sh

echo "Yöntem 1: Manuel Çözüm"
echo 'Çakışma işaretleyicilerini kaldırarak dosyayı düzenleyin'
echo 'Ardından: git add file.txt komutunu çalıştırın'

echo "\nYöntem 2: Kendi Sürümümüzü Kabul Et"
git checkout --ours file.txt

echo "\nYöntem 3: Onların Sürümünü Kabul Et"
git checkout --theirs file.txt

echo "\nYöntem 4: Birleştirme Aracı Kullan"
echo 'git mergetool --tool=meld'

echo "\nYöntemi seçtikten sonra birleştirmeyi tamamlayın:"
echo 'git commit -m "Birleştirme çakışmasını çöz"'

บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก

ฉบับเต็มมีสไลด์เพิ่มอีก 34 สไลด์

วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก

เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิก

เนื้อหาบทเรียน

  1. Üç Tür Birleştirme Çakışması
  2. Karmaşık Bir Çakışmanın Anatomisi
  3. Çakışma Çözüm Stratejileri
  4. Önleme ve En İyi Uygulamalar
  5. Git'te Çok Satırlı Çakışmalar Nasıl Okunur
  6. Bağlam İşaretleyicilerinin Şifresi
  7. İç İçe Çakışmalar: Çözüm Stratejileri
  8. Otomasyon ve Gelişmiş Araçlar
  9. Seçim Stratejisi: HEAD mi Dal mı?
  10. 'En Az Şaşırtma' Prensibi
  11. Anlamsal Çakışmalar: Görünmez Düşmanlar
  12. Araçlar ve Otomasyon
  13. Araç Seçimi: Ne Zaman Ne Kullanılmalı
  14. VS Code: Yapılandırma ve Gelişmiş Özellikler
  15. Beyond Compare: Karmaşık Çakışmalar İçin Senaryolar
  16. Git Flow ile Entegrasyon ve Otomasyon
  17. .gitattributes ile Birleştirmeyi Otomatikleştirme
  18. Kendi Merge Sürücümüzü Yazmak
  19. Git rerere — Kişisel Asistanınız
  20. Gelişmiş Otomasyon Stratejileri
  21. Büyük Ekipler için Workflow Tasarlama
  22. Çakışmaları Önleme Aracı Olarak Code Review
  23. Uzun Ömürlü Özellik Dallarıyla Çalışma Stratejileri
  24. Güvenli Çakışma Çözümü Stratejileri
  25. Birleştirmeden Sonra Test: Neler Kontrol Edilmeli
  26. Güvenli Çakışma Çözümü Stratejileri
  27. Birleştirmeden Sonra Test: Neler Kontrol Edilmeli
  28. CI/CD Entegrasyonu ve Önleyici Tedbirler
  29. Rebase Sırasında Çakışmaların Merge'den Farkı
  30. --rebase-merges ile Çalışmak
  31. Sıralı Çakışmaları Çözme Stratejileri
  32. Rebase'de İleri Teknikler ve Hata Ayıklama
  33. Kalite Kontrol Sistemi Olarak CI/CD
  34. GitHub Actions: Çatışma Kontrolü
  35. Danger-JS: Akıllı Kontrol Otomasyonu
  36. CI/CD'de Otomatik Çatışma Çözümü
  37. Çatışmalar: Panikten Güvene

บทความเกี่ยวกับบทเรียนนี้

บทเรียนทั้งหมดในคอร์สนี้

  1. Giriş: Sıfırdan Güvenilir Geliştiriciye Git
  2. Git Neden Gereklidir — ve Neden İşe Alırken Onsuz Yapamıyorlar
  3. Kurulum ve Yapılandırma: Git'i İlk Çalıştırmaya Hazırlama
  4. İlk Depo: init, add, commit ve İndeksin Sihri
  5. Geçmişi Okumak: log, diff, show ve Geçmişte Gezinti
  6. Dallar: Kodunuzun Paralel Gerçekliği
  7. Hataları Geri Alıyoruz: restore, reset, revert — Doğru ve Tehlikeli Kullanımları
  8. GitHub ve Uzaktaki Depolar: Kodunuz Bulutta
  9. Takım Çalışması: Fork'lar, Özellik Dalları ve Pull Request'ler
  10. Birleştirme Çakışmaları: Panik Yapmayın — Anlayın ve Çözün
  11. Gerçek Ekiplerde Git Süreçleri: Hangi İş Akışı Seçilmeli
  12. Gelişmiş Araçlar: rebase, stash, cherry-pick ve etiketler
  13. Final Proje: Gerçek Ekip Çalışmasını Simüle Ediyoruz