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.
-
mergeile:- 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" -
rebaseile:- 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 |