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:
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
:
git branch fitur-a
cat .git/refs/heads/fitur-aOutput yang Dihasilkan:
007af3cffed9509e457577057f8e35341eece917Isinya 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:
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:
cat .git/refs/heads/fitur-aOutput yang Dihasilkan:
007af3cffed9509e457577057f8e35341eece917cat .git/refs/heads/mainOutput yang Dihasilkan:
85f73fb7531e2e8d7feb18a22e209b50b7b9d0a1Berkas fitur-a tidak berubah satu byte pun, sedangkan main maju ke hash commit baru. git rev-parse merangkum kedua posisi tersebut:
git rev-parse main
git rev-parse fitur-aOutput yang Dihasilkan (masing-masing untuk main dan fitur-a):
85f73fb7531e2e8d7feb18a22e209b50b7b9d0a1007af3cffed9509e457577057f8e35341eece917Commit 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:
git switch -c fitur-bOutput yang Dihasilkan:
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:
git branch --show-currentOutput yang Dihasilkan:
fitur-bPerintah 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
:
git branch fitur-c HEAD~2Perintah 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:
git branchOutput yang Dihasilkan:
fitur-a
* fitur-b
fitur-c
mainTanda 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:
git branch -vOutput yang Dihasilkan:
fitur-a 007af3c Tambah baris kedua
* fitur-b 85f73fb Tambah baris ketiga
fitur-c 558138b Tulis catatan pertama
main 85f73fb Tambah baris ketigaBaris 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 .