Sobes.tech
Middle

Git sürüm kontrol sisteminde merge ve rebase komutları arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

merge, dalları iki ebeveynle yeni bir commit oluşturarak birleştirir ve değişiklik geçmişini korur. rebase, bir dalın commitlerini diğerinin üzerine taşır, geçmişi doğrusal hale getirir, ancak commit hash'lerini değiştirir.

  • merge ile:

    • Yeni bir birleştirme commit'i oluşturulur.
    • Dalların geçmişi açık kalır.
    • Çakışmalar olabilir ve yeni commit'te çözülür.
    # merge kullanımı örneği
    git checkout özellik-dalı
    git merge ana
    # Çakışmaları çöz, varsa
    git commit -m "Ana dalı özellik dalına birleştir"
    
  • rebase ile:

    • Commitler "taşınır" ve hedef dala uygulanır.
    • Geçmiş doğrusal hale gelir, "daha temiz" görünebilir.
    • Taşınan commit'lerin hash'leri değişir.
    • Her taşınan commit için çakışma olabilir.
    • Bu, zaten yayınlanmış ve başka geliştiriciler tarafından kullanılan dallar için önerilmez, çünkü geçmişi değiştirir.
    # rebase kullanımı örneği
    git checkout özellik-dalı
    git rebase ana
    # Çakışmaları çöz, varsa (her çakışan commit için tekrar et)
    git add .
    git rebase --continue
    # veya git rebase --skip, commit'i atlamak için
    # veya git rebase --abort, iptal etmek için
    
Özellik merge rebase
Geçmiş değişikliği Geçmişi korur Geçmişi değiştirir ( üzerine yazar)
Commitler Birleştirme commit'i oluşturur Mevcut commitleri taşır
Doğrusal geçmiş Hayır (dallar ayrılır) Evet (geçmişi sadeleştirir)
Yaklaşım Türetici olmayan Potansiyel olarak yıkıcı
Uygulama alanı Kamu, ortak dallar Yerel, kişisel dallar