Repository dengan beberapa branch ibarat gedung dengan beberapa lantai: sebelum naik-turun, kita perlu papan petunjuknya — lantai mana saja yang ada, kita sedang berdiri di lantai yang mana, dan apa isi tiap lantai. Git menyediakan papan itu lewat git branch beserta variannya, plus satu perintah git log yang menggambar seluruh peta dalam satu layar. Chapter ini menyusun repository latihan dengan empat branch, menambahkan remote lokal agar opsi remote ikut terlihat nyata, lalu membaca keluaran-keluaran tersebut satu per satu.
Menyiapkan Empat Branch #
Repository latihan kita beri dua commit di main, tiga branch fitur dari titik itu, dan satu commit di branch fitur-keranjang supaya posisi tiap penunjuk tidak seragam:
mkdir latihan-lihat && cd latihan-lihat
git init -b main
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf '# Toko Budi\n' > README.md
git add README.md
git commit -m "Buat README toko"
printf '# Toko Budi\n\n## Produk\n- kopi\n- gula\n' > README.md
git add README.md
git commit -m "Tambah daftar produk"
git branch fitur-keranjang
git branch fitur-laporan
git branch fitur-desain
git switch fitur-keranjang
printf '# Toko Budi\n\n## Keranjang\n- kopi 2 pcs\n' > keranjang.md
git add keranjang.md
git commit -m "Catat isi keranjang"
git switch mainKeluaran git switch fitur-keranjang:
Switched to branch 'fitur-keranjang'Keluaran git switch main:
Switched to branch 'main'Daftar paling sederhana diperoleh tanpa argumen:
git branchOutput yang Dihasilkan:
fitur-desain
fitur-keranjang
fitur-laporan
* mainTanda * di depan main menandai branch aktif — penunjuk yang sedang dibawa HEAD. Setiap perintah Git yang membuat commit baru akan menggerakkan penunjuk bertanda bintang itu, sesuai aturan dari chapter Membuat Branch
.
Detail Posisi dengan -v #
Tanpa argumen, daftar hanya memuat nama. Flag -v menambahkan dua kolom penting: hash singkat commit yang ditunjuk dan subjek commit tersebut:
git branch -vOutput yang Dihasilkan:
fitur-desain b5a28aa Tambah daftar produk
fitur-keranjang 74926fc Catat isi keranjang
fitur-laporan b5a28aa Tambah daftar produk
* main b5a28aa Tambah daftar produkBaris fitur-keranjang terlihat paling maju — menunjuk commit “Catat isi keranjang” — sementara tiga penunjuk lainnya berbagi commit “Tambah daftar produk”. Dari sini kita tahu tanpa berpindah tempat bahwa fitur-keranjang memiliki satu commit di depan main. Nama branch yang diawali fitur- juga bisa disaring dengan pola glob:
git branch --list 'fitur*'Output yang Dihasilkan:
fitur-desain
fitur-keranjang
fitur-laporanKetika repository memuat puluhan branch, filter seperti ini menyempitkan daftar ke kelompok yang sedang dicari. Urutan bawaan adalah abjad; untuk melihat branch berdasarkan kesegarannya, --sort memakai kriteria tanggal commit:
git branch --sort=-committerdateOutput yang Dihasilkan:
fitur-keranjang
fitur-desain
fitur-laporan
* mainTanda minus di depan committerdate berarti menurun: fitur-keranjang — branch yang paling terakhir menerima commit — naik ke baris pertama, jauh dari urutan abjad. Branch yang paling segar biasanya paling relevan; itulah urutan yang paling sering dipakai sehari-hari.
Melihat Branch Remote dan Info Tracking #
Daftar di atas belum memuat branch di remote, karena kita belum punya remote. Untuk latihan tanpa jaringan, cukup buat repository bare di folder sebelah dan daftarkan sebagai origin — teknik yang dibahas penuh di section Remote Repository
:
git init --bare ../toko-origin.git
git remote add origin ../toko-origin.git
git push -u origin main
git push origin fitur-keranjangKeluaran git push -u origin main:
To ../toko-origin.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.Keluaran git push origin fitur-keranjang:
To ../toko-origin.git
* [new branch] fitur-keranjang -> fitur-keranjangPush pertama memakai -u, yang selain mengirim main juga mengikat branch lokal main ke origin/main. Push kedua mengirim fitur-keranjang tanpa -u — terkirim, tetapi tidak diikat. Sekarang daftar branch memuat dua jenis penunjuk:
git branch -aOutput yang Dihasilkan:
fitur-desain
fitur-keranjang
fitur-laporan
* main
remotes/origin/fitur-keranjang
remotes/origin/mainEntri remotes/origin/... adalah remote-tracking branch: penanda posisi cabang remote sebagaimana terakhir diketahui Git, dipisahkan label remotes/ dari branch lokal kita. Flag -vv melengkapi -v dengan hubungan upstream tiap branch:
git branch -vvOutput yang Dihasilkan:
fitur-desain b5a28aa Tambah daftar produk
fitur-keranjang 74926fc Catat isi keranjang
fitur-laporan b5a28aa Tambah daftar produk
* main b5a28aa [origin/main] Tambah daftar produkHanya main yang menampilkan tanda kurung [origin/main] — bukti bahwa ikatan tracking hanya terbentuk lewat -u saat push; fitur-keranjang sudah ada di remote tetapi tidak terikat. Makna tanda kurung ini — misalnya ahead 1 saat branch lokal lebih maju dari remote — baru penting saat sinkronisasi, materi chapter Remote-Tracking Branch
.
Peta Lengkap dalam Satu Layar #
Daftar branch menjawab “penunjuknya ada di mana”, tetapi belum menggambar hubungan antar-jalurnya. Tugas itu milik git log dengan tiga flag sekaligus, pola yang sudah diperkenalkan chapter Graph History
:
git log --oneline --decorate --graph --allOutput yang Dihasilkan:
* 74926fc (origin/fitur-keranjang, fitur-keranjang) Catat isi keranjang
* b5a28aa (HEAD -> main, origin/main, fitur-laporan, fitur-desain) Tambah daftar produk
* 705152c Buat README tokoSatu layar memuat seluruh cerita: commit mana yang dikepalai HEAD -> main (kombinasi penunjuk aktif dan branchnya), commit mana yang dihuni label fitur-laporan dan fitur-desain, posisi salinan remote origin/main dan origin/fitur-keranjang, serta bentuk rantainya — di repository ini masih garis lurus karena ketiga branch fitur hanya diam di tempat.
Peta sudah terbaca; saatnya menempuh perpindahan pertama. Bagaimana isi working tree bereaksi ketika penunjuk aktif berganti — berkas apa yang berubah, dan bagaimana nasib suntingan yang belum di-commit — itu pokok bahasan chapter Berpindah Branch .