Memahami Jenis Merge

Git Tingkat Lanjut

Amanda Crawford-Adamo

Software and Data Engineer

Saya Amanda

Foto Amanda

Git Tingkat Lanjut

Apa itu git merge?

Perintah Git Merge:

git merge
  • Menggabungkan perubahan dari satu branch ke branch lain
  • Menemukan basis bersama antara dua branch
  • Dapat memakai berbagai strategi merge

Jalan tempat dua jalan bergabung dengan dua mobil menyatu ke jalan yang sama

Git Tingkat Lanjut

Fast-forward merge

Apa itu fast-forward merge?

  • Menjaga riwayat sederhana dan lurus
  • Ideal untuk branch singkat dengan perubahan sederhana

$$

Kapan tidak digunakan

  • Perlu melestarikan riwayat branch
  • Fitur kompleks di branch jangka panjang
  • Konflik merge antar-branch — fast-forward langsung gagal!
Git Tingkat Lanjut

Fast-forward merge (sebelum)

Graf yang menampilkan dua branch: main dan feature. Main memiliki dua commit. Feature bercabang setelah commit terbaru main dengan satu commit tambahan di branch-nya.

Git Tingkat Lanjut

Sintaks fast-forward merge

Git Merge Fast Forward (Default)

git checkout main
git merge feature_branch

Paksa Git Merge Fast Forward

git merge <branch> --ff-only

Contoh

git checkout main
git merge feature_branch --ff-only
Git Tingkat Lanjut

Fast-forward merge (setelah)

Graf yang menampilkan dua branch: main dan feature. Main memiliki tiga commit. Feature bercabang setelah commit kedua main dengan satu commit tambahan di branch-nya. Commit ketiga main adalah salinan commit terbaru di feature.

Git Tingkat Lanjut

Recursive merge

Apa itu recursive merge?

  • Membuat merge commit dengan dua parent
  • Melestarikan seluruh riwayat proyek
  • Ideal untuk branch jangka panjang
  • Menjaga struktur percabangan

$$

Kapan tidak digunakan

  • Saat ingin riwayat sederhana dan linear
  • Perubahan cepat dan kecil
Git Tingkat Lanjut

Recursive merge (sebelum)

Graf yang menampilkan dua branch: main dan feature. Main memiliki tiga commit. Feature bercabang setelah commit pertama main dengan dua commit tambahan di branch-nya.

Git Tingkat Lanjut

Sintaks recursive merge

Perintah Recursive Merge:

git merge --no-ff <branch>

Contoh

$ 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.
...
Git Tingkat Lanjut

Recursive merge (setelah)

Graf yang menampilkan dua branch: main dan feature. Main memiliki enam commit. Feature bercabang setelah commit terbaru main dengan dua commit tambahan di branch-nya. Enam commit di main adalah selang-seling gabungan commit main dan feature. Commit terbaru main adalah merge commit dengan dua parent: commit terbaru di feature dan commit terbaru sebelumnya di main.

Git Tingkat Lanjut

Ringkasan

  • Fast-forward menjaga riwayat sederhana dan linear
  • Recursive menjaga konteks historis
  • Recursive lebih baik untuk pengembangan kompleks

Perintah Fast-forward Merge

git merge <branch_name> # perintah default
git merge --ff-only <branch_name> # paksa fast-forward

Perintah Recursive Merge

git merge --no-ff <branch_name>
Git Tingkat Lanjut

Ayo berlatih!

Git Tingkat Lanjut

Preparing Video For Download...