Branch: Konsep, Membuat, Berpindah
Tujuan Pembelajaran
- Memahami branch sebagai pointer ke commit
- Mampu membuat, melihat, dan berpindah branch
- Memahami visualisasi branch di commit graph
Materi Inti
Konsep Branch
Branch adalah pointer ringan ke sebuah commit. Membuat branch baru TIDAK menyalin file — hanya membuat pointer baru. Ini membuat branching di Git sangat cepat dan ringan.
C0 <- C1 <- C2 (main)
^
(HEAD)
Setelah: git branch fitur
C0 <- C1 <- C2 (main) (fitur)
^
(HEAD -> main)
Setelah: git switch fitur; git commit
C0 <- C1 <- C2 (main)
\
C3 (fitur)
^
(HEAD -> fitur)
Konsep penting:
- Branch = pointer yang menunjuk ke sebuah commit
- HEAD = pointer yang menunjuk ke branch aktif saat ini
- Membuat branch baru sangat murah (hanya file 41 byte berisi hash commit)
- Kamu bisa punya puluhan branch tanpa memperlambat Git
Tips: Biasakan membuat branch baru untuk setiap fitur atau perbaikan. Jangan bekerja langsung di branch
main.
Perintah Branch
# Lihat semua branch (* = branch aktif)
git branch
# Buat branch baru (TANPA pindah)
git branch nama-branch
# Pindah ke branch lain
git switch nama-branch # cara modern (Git 2.23+)
git checkout nama-branch # cara lama (masih valid)
# Buat branch baru DAN langsung pindah
git switch -c nama-branch # cara modern
git checkout -b nama-branch # cara lama
# Hapus branch (setelah di-merge)
git branch -d nama-branch
# Hapus branch (paksa, meskipun belum di-merge)
git branch -D nama-branch
# Lihat semua branch termasuk remote
git branch -a
| Perintah | Fungsi |
|---|---|
git branch | Lihat daftar branch |
git branch nama | Buat branch baru |
git switch nama | Pindah ke branch |
git switch -c nama | Buat dan pindah sekaligus |
git branch -d nama | Hapus branch (aman) |
git branch -D nama | Hapus branch (paksa) |
git branch -a | Lihat semua branch (lokal + remote) |
Warning:
git branch -Dakan menghapus branch meskipun belum di-merge. Gunakan dengan hati-hati!
Demonstrasi Live
mkdir latihan-branch && cd latihan-branch && git init
# Commit awal di main
echo "v1" > file.txt
git add . && git commit -m "Commit awal"
# Buat beberapa branch
git branch fitur-login
git branch fitur-navbar
# Lihat daftar branch
git branch
# * main
# fitur-login
# fitur-navbar
# Pindah ke fitur-login dan buat commit
git switch fitur-login
echo "Login form" > login.html
git add . && git commit -m "Tambah halaman login"
# Pindah ke fitur-navbar dan buat commit
git switch fitur-navbar
echo "Navbar" > navbar.html
git add . && git commit -m "Tambah navbar"
# Kembali ke main dan lihat graph
git switch main
git log --oneline --graph --all
Perhatikan bahwa saat kamu pindah branch, file yang ada di working directory berubah sesuai branch tersebut.
Latihan Interaktif
A. Latihan Visualisasi — Learn Git Branching
Level: “Branching in Git” (Introduction Level 2)
Ketik di LGB: level intro2
Pada level ini kamu akan belajar bahwa branch di Git sangat ringan — hanya pointer ke commit. Membuat branch berarti membuat pointer baru yang memungkinkan kamu mengerjakan fitur baru tanpa mengganggu kode utama.
Tantangan: Buat branch bugFix dan pindah ke sana
git branch bugFix
git checkout bugFix
Level: “Detach yo’ HEAD” (Ramping Up Level 1)
Ketik di LGB: level rampup1
HEAD biasanya menunjuk ke branch, tapi bisa juga langsung ke commit. Kondisi ini disebut “Detached HEAD” — HEAD menunjuk langsung ke commit, bukan ke branch.
Solusi:
git checkout C4
Level: “Relative Refs (^)” (Ramping Up Level 2)
Ketik di LGB: level rampup2
Operator ^ artinya “parent” (1 commit ke atas). Misalnya:
main^= parent dari commit yang ditunjuk mainbugFix^^= grandparent dari bugFix
Solusi:
git checkout bugFix^
B. Latihan Terminal
mkdir latihan-branch-2 && cd latihan-branch-2 && git init
# Commit awal
echo "v1" > file.txt && git add . && git commit -m "Commit awal"
# Buat 3 branch fitur
git switch -c fitur-header
echo "<header>Header</header>" > header.html
git add . && git commit -m "Tambah header"
echo "<nav>Menu</nav>" >> header.html
git add . && git commit -m "Tambah navigasi di header"
git switch main
git switch -c fitur-footer
echo "<footer>Footer</footer>" > footer.html
git add . && git commit -m "Tambah footer"
echo "<p>Copyright 2024</p>" >> footer.html
git add . && git commit -m "Tambah copyright di footer"
git switch main
git switch -c fitur-sidebar
echo "<aside>Sidebar</aside>" > sidebar.html
git add . && git commit -m "Tambah sidebar"
echo "<ul><li>Menu 1</li></ul>" >> sidebar.html
git add . && git commit -m "Tambah menu di sidebar"
# Lihat semua branch dan graph
git switch main
git log --oneline --graph --all
Tugas Mandiri
- LGB: Selesaikan level
intro2,rampup1,rampup2, danrampup3 - Buat project dengan 3 branch fitur, masing-masing memiliki minimal 2 commit
- Latih perpindahan antar branch dan perhatikan perubahan file di working directory
Praktik Interaktif
Selesaikan level berikut untuk memperkuat pemahaman kamu.