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:
| Situasi | Gunakan |
|---|---|
| Branch fitur pribadi, belum di-push | Rebase (history bersih) |
| Branch yang sudah di-share/push | Merge (aman, tidak ubah history) |
| Menggabungkan ke main/develop | Merge (mencatat titik penggabungan) |
| Update branch fitur dari main | Rebase (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
| No | Topik | Jumlah Soal |
|---|---|---|
| 1 | Konsep branch | 2 soal |
| 2 | Perintah branch | 2 soal |
| 3 | Fast-forward vs three-way merge | 1 soal |
| 4 | Merge conflict | 3 soal |
| 5 | Rebase vs merge | 1 soal |
| 6 | Branch management | 1 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 fituradalah cara modern untuk buat dan pindah branchgit branch -dgagal jika branch belum di-mergegit branch -amenampilkan 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 adddangit commit git merge --abortmembatalkan 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
- Pastikan semua level LGB sudah selesai:
intro2,intro3,intro4,rampup1,rampup2 - Buat project dengan minimal 4 branch, merge semuanya ke main, dan tangani minimal 1 conflict
- Latih penggunaan
git log --oneline --graph --alluntuk memahami visualisasi branch
Praktik Interaktif
Selesaikan level berikut untuk memperkuat pemahaman kamu.
Quiz: Review Modul 2.1
Jawab 10 pertanyaan berikut untuk menguji pemahaman kamu.
Branch di Git sebenarnya adalah...