Chapter sebelumnya menetapkan fondasinya: branch adalah penunjuk 41 byte ke sebuah commit. Pertanyaan berikutnya jadi praktis — bagaimana kita membuat penunjuk itu, dan dari titik mana penunjuk baru ditempelkan? Git menyediakan beberapa pintu: git branch membuat branch tanpa memindahkan kita, git switch -c membuat sekaligus langsung berpindah, dan titik awalnya bisa dipilih dari commit mana pun di rantai. Chapter ini menuntun ketiganya sambil membuktikan satu sifat penting lewat keluaran asli: branch baru tidak ikut bergerak ketika commit baru dibuat.

Repository Latihan: Tiga Commit Garis Lurus #

Kita mulai dengan repository kecil yang riwayatnya masih satu garis, seperti biasa dengan identitas lokal dan branch awal main:

bash
mkdir latihan-buat && cd latihan-buat
git init -b main
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf 'Catatan versi 1\n' > catatan.md
git add catatan.md
git commit -m "Tulis catatan pertama"
printf 'Catatan versi 1\nBaris kedua\n' > catatan.md
git add catatan.md
git commit -m "Tambah baris kedua"

Membuat Branch dengan git branch #

Perintah paling sederhana adalah git branch <nama>. Perintah ini tidak mencetak apa pun ketika berhasil — keluarannya memang kosong — jadi kita verifikasi hasilnya dari berkas penunjuknya, persis seperti chapter Konsep Branch :

bash
git branch fitur-a
cat .git/refs/heads/fitur-a

Output yang Dihasilkan:

text
007af3cffed9509e457577057f8e35341eece917

Isinya adalah hash commit terakhir — commit “Tambah baris kedua” — karena branch baru selalu menempel pada commit yang ditunjuk HEAD saat perintah dijalankan. Inilah aturan pentingnya: git branch membuat penunjuk pada posisi saat ini, bukan pada “commit berikutnya” dan bukan pada titik yang akan datang. Rincian flag lainnya termasuk menghapus dan mengganti nama penunjuk dirangkum di dokumentasi resmi git-scm.com/docs/git-branch .

Commit Baru Menggerakkan main, Bukan fitur-a #

Sekarang kita uji sifat yang paling sering disalahpahami pemula. Buat commit ketiga — kita masih berada di main karena git branch tidak memindahkan kita:

bash
printf 'Catatan versi 1\nBaris kedua\nBaris ketiga\n' > catatan.md
git add catatan.md
git commit -m "Tambah baris ketiga"

Lalu baca kembali kedua berkas penunjuk:

bash
cat .git/refs/heads/fitur-a

Output yang Dihasilkan:

text
007af3cffed9509e457577057f8e35341eece917
bash
cat .git/refs/heads/main

Output yang Dihasilkan:

text
85f73fb7531e2e8d7feb18a22e209b50b7b9d0a1

Berkas fitur-a tidak berubah satu byte pun, sedangkan main maju ke hash commit baru. git rev-parse merangkum kedua posisi tersebut:

bash
git rev-parse main
git rev-parse fitur-a

Output yang Dihasilkan (masing-masing untuk main dan fitur-a):

text
85f73fb7531e2e8d7feb18a22e209b50b7b9d0a1
text
007af3cffed9509e457577057f8e35341eece917

Commit hanya menggerakkan penunjuk branch yang aktif — branch tempat HEAD berada saat ini. Penunjuk lain diam di tempat, dan di situlah letak pemisahan jalur pekerjaan: mulai titik fitur-a, riwayat main dengan “Tambah baris ketiga” belum ada. Hash di mesin pembaca tentu berbeda mengikuti commit yang dibuat, tetapi polanya identik: satu penunjuk maju, penunjuk lainnya menunggu.

Buat dan Langsung Pindah dengan git switch -c #

Membuat branch lalu berpindah dengan dua perintah terasa repot, karena itu Git menyediakan gabungannya:

bash
git switch -c fitur-b

Output yang Dihasilkan:

text
Switched to a new branch 'fitur-b'

Flag -c (create) membuat branch fitur-b pada commit saat ini sekaligus memindahkan HEAD ke branch baru. Posisi kita sekarang bisa dicek tanpa membaca berkas internal:

bash
git branch --show-current

Output yang Dihasilkan:

text
fitur-b

Perintah git switch punya cerita sendiri — mengapa ia ada, apa bedanya dengan git checkout tua — dan dibahas tuntas di chapter git switch . Untuk kebutuhan membuat branch, switch -c adalah bentuk yang dianjurkan materi ini.

Membuat Branch dari Titik Lain di Riwayat #

Titik awal branch tidak harus commit terbaru. Kita bisa menunjuk commit mana pun, misalnya dua commit di belakang posisi sekarang memakai notasi HEAD~2 yang diperkenalkan di chapter Anatomi Commit :

bash
git branch fitur-c HEAD~2

Perintah itu membuat fitur-c menempel pada commit “Tulis catatan pertama” — dua langkah ke belakang dari posisi fitur-b. Daftar lengkap beserta posisi tiap penunjuk sekarang bisa kita lihat:

bash
git branch

Output yang Dihasilkan:

text
  fitur-a
* fitur-b
  fitur-c
  main

Tanda bintang * menandai branch aktif — kita sedang berada di fitur-b — dan tiap nama lain tampil dengan inden dua spasi. Menambahkan -v memunculkan posisi tiap penunjuk dalam bentuk hash singkat beserta subjek commit yang ditunjuk:

bash
git branch -v

Output yang Dihasilkan:

text
  fitur-a 007af3c Tambah baris kedua
* fitur-b 85f73fb Tambah baris ketiga
  fitur-c 558138b Tulis catatan pertama
  main    85f73fb Tambah baris ketiga

Baris fitur-c menunjuk hash singkat 558138b — “Tulis catatan pertama” — sementara fitur-a berhenti di “Tambah baris kedua”, dan fitur-b setara dengan main pada “Tambah baris ketiga”. Hash singkat di mesin pembaca bisa saja tujuh karakter yang lain, tetapi posisinya mengikuti aturan yang sama. Perintah -v ini akan kita bedah lebih jauh di chapter berikutnya, karena daftar branch yang informatif adalah alat navigasi utama sebelum berpindah-pindah.

Empat branch kini hidup dalam satu repository tanpa satu byte berkas proyek terduplikasi. Sebelum benar-benar berpindah jalur, kita perlu tahu cara membaca peta lengkapnya: branch mana saja yang ada, di posisi mana masing-masing berdiri, dan mana yang sedang aktif — itu pekerjaan chapter Melihat Branch .