Birleştirme Türlerini Anlama

İleri Seviye Git

Amanda Crawford-Adamo

Software and Data Engineer

Ben Amanda

Amanda'nın bir resmi

İleri Seviye Git

Git merge nedir?

Git Merge Komutu:

git merge
  • Bir dalın değişikliklerini diğerine birleştirir
  • İki dal arasındaki ortak tabanı bulur
  • Farklı birleştirme stratejileri kullanır

İki yolun birleştiği ve iki arabanın aynı yolda kesiştiği bir yol

İleri Seviye Git

Fast-forward merge

Fast-forward merge nedir?

  • Basit, düz bir geçmişi korur
  • Basit değişiklikli, kısa ömürlü dallar için idealdir

$$

Ne zaman kullanılmaz

  • Dal geçmişi korunmak istendiğinde
  • Uzun ömürlü dallarda karmaşık özellik geliştirme
  • Dallar arasında çakışma varsa — fast-forward hemen başarısız olur!
İleri Seviye Git

Fast-forward birleştirme (önce)

İki dalı gösteren grafik: main ve feature branch. Main'de iki commit var. Feature branch, main'in en son commit'inden sonra ayrılıyor ve kendi dalında ek bir commit var.

İleri Seviye Git

Fast-forward birleştirme söz dizimi

Git Hızlı İleri (Fast-forward) Varsayılanı

git checkout main
git merge feature_branch

Git Hızlı İleri'yi Zorla

git merge <branch> --ff-only

Örnek

git checkout main
git merge feature_branch --ff-only
İleri Seviye Git

Fast-forward birleştirme (sonra)

İki dalı gösteren grafik: main ve feature branch. Main'de üç commit var. Feature branch, main'in ikinci commit'inden sonra ayrılıyor ve kendi dalında ek bir commit var. Main'in üçüncü commit'i, feature branch'in son commit'inin kopyasıdır.

İleri Seviye Git

Recursive merge

Recursive merge nedir?

  • İki ebeveynli bir birleştirme commit'i oluşturur
  • Tüm proje geçmişini korur
  • Uzun ömürlü dallar için idealdir
  • Dallanma yapısını sürdürür

$$

Ne zaman kullanılmaz

  • Basit ve doğrusal bir geçmiş istendiğinde
  • Hızlı ve küçük değişikliklerde
İleri Seviye Git

Recursive merge (önce)

İki dalı gösteren grafik: main ve feature branch. Main'de üç commit var. Feature branch, main'in ilk commit'inden sonra ayrılıyor ve kendi dalında iki ek commit var.

İleri Seviye Git

Recursive merge söz dizimi

Recursive Merge Komutu:

git merge --no-ff <branch>

Örnek

$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

$ git merge --no-ff feature_branch
Merge made by the 'recursive' strategy.
...
İleri Seviye Git

Recursive merge (sonra)

İki dalı gösteren grafik: main ve feature branch. Main'de altı commit var. Feature branch, main'in en son commit'inden sonra ayrılıyor ve kendi dalında iki ek commit var. Main dalındaki altı commit, main ve feature commit'lerinin iç içe geçmiş halidir. Main'in son commit'i, iki ebeveyne sahip bir birleştirme commit'idir: feature branch'in son commit'i ve main'in önceki son commit'i.

İleri Seviye Git

Özet

  • Fast-forward birleştirme geçmişi basit ve doğrusal tutar
  • Recursive birleştirme bağlamsal geçmişi korur
  • Daha karmaşık geliştirmeler için recursive daha iyidir

Fast-forward Birleştirme Komutları

git merge <branch_name> # varsayılan komut
git merge --ff-only <branch_name> # hızlı ileriyi zorla

Recursive Merge Komutu

git merge --no-ff <branch_name>
İleri Seviye Git

Haydi pratik yapalım!

İleri Seviye Git

Preparing Video For Download...