Merge özellikleri
- Git kursu
- Orta seviye
- Ders 9/82
- 4 dk
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-daliVar 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 --onelineGrafik 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
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
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
git merge ____ ozellik
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 |