Menu
Coddy logo textTech

Git Merge

Son güncelleme

git merge, başka bir daldaki commit'leri geçerli dalınıza getirir. Geçerli dal ayrışmamışsa, Git bir fast-forward yapar - yalnızca işaretçiyi ileri taşır. Her iki dalda da yeni commit'ler varsa, Git iki geçmişi birbirine bağlayan bir merge commit oluşturur. Rebase'in aksine, merge her iki dalın tam geçmişini korur.

Bunları terminal playground'da deneyin - tarayıcınızda gerçek bir kabuk, kurulacak hiçbir şey yok.

Sözdizimi

CommandWhat it does
git merge featurefeature dalını geçerli dala birleştirir
git merge --no-ff featureHer zaman bir merge commit oluşturur
git merge --ff-only featureYalnızca fast-forward yapılabiliyorsa birleştirir
git merge --squash featureDalın commit'lerini tek bir commit'te birleştirir
git merge --abortÇakışmalı bir birleştirmeyi iptal eder

Fast-forward ile merge commit karşılaştırması

ScenarioFast-forwardMerge commit (--no-ff)
Yeni bir commit oluştururHayırEvet
Dalın kaydını tutarHayırEvet
Ne zaman gerçekleşirGeçerli dal ayrışmamıştırHer iki dalda da yeni commit'ler vardır

Bir birleştirme çakışmasını çözme

Her iki dal da aynı satırları değiştirdiğinde, Git duraklar.

StepCommandResult
1Çakışan dosyaları düzenleyinDoğru satırları seçin, işaretçileri kaldırın
2git add <file>Çakışmayı çözülmüş olarak işaretler
3git commitBirleştirmeyi tamamlar

git merge SSS

Git'te bir dalı başka bir dala nasıl birleştiririm?
Birleştirmek istediğiniz dala geçin (örneğin git switch main), ardından git merge feature komutunu çalıştırın. Git, feature dalındaki commit'leri main dalına birleştirir; ya bir fast-forward ile ya da her iki dal da ayrışmışsa bir merge commit oluşturarak.
Fast-forward ile merge commit arasındaki fark nedir?
Fast-forward, diğer dal ayrıldığından beri geçerli dalınız hareket etmediğinde gerçekleşir - Git yalnızca işaretçiyi ileri kaydırır, yeni bir commit oluşturmaz. Merge commit ise her iki dalda da yeni commit'ler olduğunda oluşturulur ve geçmişlerini birbirine bağlar. Her zaman bir merge commit oluşturmak için --no-ff, fast-forward gerektirmek için --ff-only kullanın.
Bir birleştirme çakışmasını nasıl çözerim?
Bir birleştirme çakıştığında, Git etkilenen dosyalardaki çakışan bölümleri <<<<<<<, ======= ve >>>>>>> işaretçileriyle işaretler. Doğru içeriği korumak ve işaretçileri kaldırmak için her dosyayı düzenleyin, ardından çözülen dosyalara git add yapın ve birleştirmeyi bitirmek için git commit çalıştırın.
Bir birleştirmeyi nasıl geri alırım veya iptal ederim?
Birleştirme hâlâ devam ediyorsa (çakışmalar çözülmemişse), iptal etmek ve birleştirme öncesi duruma dönmek için git merge --abort çalıştırın. Birleştirme yerelde zaten tamamlandıysa, git reset --hard ORIG_HEAD dalı birleştirme öncesi konumuna döndürür (HEAD~1'in aksine, bir fast-forward sonrasında da doğrudur - ancak commit'lenmemiş çalışmayı siler). Birleştirme push edildiyse git revert -m 1 <merge-hash> kullanın.
Bunu çevrimiçi olarak deneyebilir miyim?
Evet. git merge komutunu tarayıcınızda gerçek bir kabukta çalıştırmak için terminal playground'ı açın - kurulacak hiçbir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu da birleştirmeyi ve çakışmaları çözmeyi adım adım kapsar.
Coddy programming languages illustration

Coddy ile Git öğren

BAŞLA