CodeBlanks Logo Icon CodeBlanks

Merge özellikleri

git merge'in tarihçe nasıl koruduğunu öğrenirsin.

Merge özellikleri ve merge commit

git merge komutu, iki farklı dalın geçmişini bir araya getirirken dalların bağımsız tarihini olduğu gibi korur. Dallanma geçmişini birleştirmek için iki ebeveyne (parent) sahip özel bir merge commit oluşturur. Bu işlem, hangi özelliğin ne zaman ve hangi daldan geldiğini şeffaf biçimde belgeler.

git checkout main
git merge ozellik-dali

Var olan commit'ler asla değiştirilmez veya yeniden yazılmaz; bu da merge işlemini güvenli ve tahribatsız kılar.

Merge commit zorlama: --no-ff

Merge commit sayesinde Git tarihçesi dallanma ve birleşme anlarını açıkça gösterir. --no-ff seçeneği kullanılırsa, fast-forward yapılabilecek durumlarda bile zorla merge commit üretilir. Böylece bir özelliğin ne zaman ana dala katıldığı tarihçede kalıcı bir iz bırakır.

git merge --no-ff ozellik-dali
git log --graph --oneline

Grafik görünümünde dalların ayrılıp tekrar ana gövdede buluştuğunu izleyebilirsin.

Uygulama Merge commit ile dalları birleştir

ozellik dalını git merge -m "Merge ozellik" ozellik komutuyla birleştir ve ardından git log -1 --format="%s" ile son commit başlığını ekrana yazdır.

Başlangıç kodu

terminal
git init -q
git config user.name "Deniz"
git config user.email "deniz@example.com"
echo "a" > a.txt
git add a.txt
git commit -qm "Ana commit"

git checkout -q -b ozellik
echo "b" > b.txt
git add b.txt
git commit -qm "Ozellik commit"

git checkout -q main
echo "c" > c.txt
git add c.txt
git commit -qm "Ana dal guncelleme"

# ozellik dalini merge et ve son commit basligini yazdir

Örnek çözüm

terminal
git init -q
git config user.name "Deniz"
git config user.email "deniz@example.com"
echo "a" > a.txt
git add a.txt
git commit -qm "Ana commit"

git checkout -q -b ozellik
echo "b" > b.txt
git add b.txt
git commit -qm "Ozellik commit"

git checkout -q main
echo "c" > c.txt
git add c.txt
git commit -qm "Ana dal guncelleme"

git merge -m "Merge ozellik" ozellik
git log -1 --format="%s"

Beklenen çıktı

Merge ozellik

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 git merge komutu iki ayrışmış dalı birleştirdiğinde tarihçeyi nasıl korur?

  • İki ebeveyne sahip yeni bir merge commit oluşturarak tüm geçmişi korur Doğru cevap
  • Commit'lerin hash değerlerini ve zaman damgalarını baştan oluşturur
  • Hedef daldaki geçmiş commit'lerin tamamını çalışma dizininden siler
  • Dalın tüm commit'lerini silerek tek bir commit'e sıkıştırır

Açıklama: git merge iki dalın geçmişini birleştiren ve iki ebeveyni bulunan özel bir merge commit üreterek geçmişi eksiksiz korur.

2 Merge commit oluşturmaya zorla

Soru
git merge ____ ozellik
Cevap
git merge --no-ff ozellik

Açıklama: --no-ff (no fast-forward) bayrağı, fast-forward mümkün olsa dahi açıkça bir merge commit üretilmesini sağlar.

3 Merge kavramları

Kavram Anlamı
git merge Dalları geçmişi koruyarak birleştirir
Merge commit İki ebeveyni olan birleştirme kaydı
--no-ff Zorunlu merge commit oluşturur
Tahribatsız işlem Mevcut commit'leri asla değiştirmez

Orta seviye bölümündeki tüm dersler

20 Orta seviye finali

  1. Dal yönetimi
  2. Rebase
  3. Çatışma
  4. PR akışı