Pertemuan Pertemuan 12

Branch: Konsep, Membuat, Berpindah

Pertemuan 12 / 32
Intermediate Modul 2.1 60 menit
Pertemuan 12

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
PerintahFungsi
git branchLihat daftar branch
git branch namaBuat branch baru
git switch namaPindah ke branch
git switch -c namaBuat dan pindah sekaligus
git branch -d namaHapus branch (aman)
git branch -D namaHapus branch (paksa)
git branch -aLihat semua branch (lokal + remote)

Warning: git branch -D akan 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 main
  • bugFix^^ = 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

  1. LGB: Selesaikan level intro2, rampup1, rampup2, dan rampup3
  2. Buat project dengan 3 branch fitur, masing-masing memiliki minimal 2 commit
  3. Latih perpindahan antar branch dan perhatikan perubahan file di working directory

Praktik Interaktif

Selesaikan level berikut untuk memperkuat pemahaman kamu.

Learn Git Branching — Level: intro2
Buka di tab baru
Memuat Learn Git Branching...
Learn Git Branching — Level: rampup1
Buka di tab baru
Memuat Learn Git Branching...
Learn Git Branching — Level: rampup2
Buka di tab baru
Memuat Learn Git Branching...