Pertemuan Pertemuan 14

Latihan Merge Intensif & Quiz 2.1

Pertemuan 14 / 32
Intermediate Modul 2.1 60 menit
Pertemuan 14

Latihan Merge Intensif & Quiz 2.1

Tujuan Pembelajaran

  • Menguasai rebase sebagai alternatif merge
  • Mampu mengelola project multi-branch
  • Mengevaluasi pemahaman modul 2.1

Latihan LGB: Rebase Introduction

Level: “Rebase Introduction” (Introduction Level 4)

Ketik di LGB: level intro4

Rebase adalah alternatif dari merge. Alih-alih membuat merge commit, rebase “memindahkan” commit kamu ke basis baru. Hasilnya adalah history yang linear — tanpa merge commit.

SEBELUM rebase:
main:    C0 <- C1 <- C3
bugFix:  C0 <- C1 <- C2

SESUDAH git rebase main (dari bugFix):
main:    C0 <- C1 <- C3
bugFix:  C0 <- C1 <- C3 <- C2'
(C2' adalah salinan C2 yang dipindahkan ke atas C3)

Solusi LGB:

git checkout -b bugFix
git commit
git checkout main
git commit
git checkout bugFix
git rebase main

Warning: Jangan pernah rebase commit yang sudah di-push ke remote dan digunakan orang lain! Rebase mengubah history, yang bisa menyebabkan masalah bagi kolaborator.

Kapan pakai merge vs rebase:

SituasiGunakan
Branch fitur pribadi, belum di-pushRebase (history bersih)
Branch yang sudah di-share/pushMerge (aman, tidak ubah history)
Menggabungkan ke main/developMerge (mencatat titik penggabungan)
Update branch fitur dari mainRebase (history linear)

Latihan Terminal: Multi-Branch Project

Skenario: Toko Online

Bangun project toko online dengan beberapa branch fitur yang harus di-merge satu per satu.

mkdir toko-online && cd toko-online && git init

# Commit awal
echo "# Toko Online" > README.md
echo "<h1>Toko Online</h1>" > index.html
git add . && git commit -m "Init: halaman utama toko online"

# Branch 1: fitur keranjang
git switch -c fitur/keranjang
echo "<div id='cart'>Keranjang</div>" > cart.html
git add . && git commit -m "Tambah halaman keranjang"
echo ".cart { background: yellow; }" > cart.css
git add . && git commit -m "Tambah styling keranjang"

# Branch 2: fitur daftar produk
git switch main
git switch -c fitur/daftar-produk
echo "<div id='products'>Daftar Produk</div>" > products.html
git add . && git commit -m "Tambah halaman daftar produk"

# Merge keranjang ke main (fast-forward)
git switch main
git merge fitur/keranjang

# Merge daftar produk ke main (three-way merge)
git merge fitur/daftar-produk

# Lihat history lengkap
git log --oneline --graph --all

# Cleanup branch yang sudah di-merge
git branch -d fitur/keranjang
git branch -d fitur/daftar-produk

Tantangan Tambahan

Coba tambahkan branch ketiga yang mengedit index.html (file yang sama dengan main) untuk memicu conflict:

git switch -c fitur/header
echo "<header>Toko Online Premium</header>" > index.html
git add . && git commit -m "Tambah header premium"

git switch main
echo "<header>Toko Online Murah</header>" > index.html
git add . && git commit -m "Ubah header utama"

# Merge -- akan conflict!
git merge fitur/header
# Selesaikan conflict secara manual

Quiz Modul 2.1

Quiz ini menguji pemahaman tentang branch, merge, conflict resolution, dan rebase.

Passing grade: 70% (minimal 7 dari 10 benar)

Topik yang Diuji

NoTopikJumlah Soal
1Konsep branch2 soal
2Perintah branch2 soal
3Fast-forward vs three-way merge1 soal
4Merge conflict3 soal
5Rebase vs merge1 soal
6Branch management1 soal

Materi yang Perlu Dikuasai

Konsep Branch:

  • Branch adalah pointer ringan ke sebuah commit
  • HEAD menunjuk ke branch yang sedang aktif
  • Membuat branch tidak menyalin file

Perintah Branch:

  • git switch -c fitur adalah cara modern untuk buat dan pindah branch
  • git branch -d gagal jika branch belum di-merge
  • git branch -a menampilkan branch lokal dan remote

Merge:

  • Fast-forward terjadi saat branch target tidak punya commit baru
  • Three-way merge membuat merge commit
  • Marker ======= memisahkan kode dari 2 branch yang conflict

Conflict Resolution:

  • Selesaikan manual, lalu git add dan git commit
  • git merge --abort membatalkan merge yang sedang conflict

Merge vs Rebase:

  • Merge membuat commit gabungan, rebase membuat history linear
  • Jangan rebase commit yang sudah di-push dan dipakai orang lain

Tugas Mandiri

  1. Pastikan semua level LGB sudah selesai: intro2, intro3, intro4, rampup1, rampup2
  2. Buat project dengan minimal 4 branch, merge semuanya ke main, dan tangani minimal 1 conflict
  3. Latih penggunaan git log --oneline --graph --all untuk memahami visualisasi branch

Praktik Interaktif

Selesaikan level berikut untuk memperkuat pemahaman kamu.

Learn Git Branching — Level: intro4
Buka di tab baru
Memuat Learn Git Branching...

Quiz: Review Modul 2.1

Jawab 10 pertanyaan berikut untuk menguji pemahaman kamu.

Soal 1 dari 10

Branch di Git sebenarnya adalah...