Nama branch itu murah di buat, tetapi mahal di rawan: salah ketik terjadi, konvensi tim bergeser, atau nama “sementara” ternyata bertahan berbulan-bulan. Refleks pertama banyak orang — hapus branch lama, buat ulang yang baru — membuang dua hal berharga: posisi commit dan jejak reflog. git branch -m (move) menawarkan jalan yang jauh lebih murah: penunjuknya pindah ke nama baru, hash commit dan seluruh riwayatnya tidak tersentuh sama sekali. Chapter ini menguji rename untuk branch lain, untuk branch aktif, lalu membahas dua wilayah yang lebih hati-hati: branch di remote dan migrasi nama bawaan master ke main. Rujukan opsi lengkapnya: git-scm.com/docs/git-branch .

Mengganti Nama Branch Lain #

Repository latihan menaruh pekerjaan tema gelap pada branch yang namanya kurang spesifik — fitur-tampilan:

bash
mkdir latihan-rename && cd latihan-rename
git init -b main
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf 'tema.md\n' > tema.md
git add tema.md
git commit -m "Mulai catatan tema"
git switch -c fitur-tampilan
printf 'tema gelap: latar #1c1c1c\n' > tema.md
git add tema.md
git commit -m "Mulai rancangan tema gelap"
git switch main
git branch -m fitur-tampilan fitur-tema-gelap
git branch -v

Output yang Dihasilkan (perintah git branch -v):

text
  fitur-tema-gelap 9cbacd2 Mulai rancangan tema gelap
* main             9a5a40e Mulai catatan tema

Perintah git branch -m fitur-tampilan fitur-tema-gelap sendiri tidak mencetak apa pun — sukses yang diam. Daftar branch kini hanya mengenal fitur-tema-gelap, dan yang penting: branchnya tetap menunjuk commit 9cbacd2 yang sama. Bahkan reflog ikut mencatat perpindahan namanya:

bash
git reflog show fitur-tema-gelap

Output yang Dihasilkan:

text
9cbacd2 fitur-tema-gelap@{0}: Branch: renamed refs/heads/fitur-tampilan to refs/heads/fitur-tema-gelap
9cbacd2 fitur-tema-gelap@{1}: commit: Mulai rancangan tema gelap
9a5a40e fitur-tema-gelap@{2}: branch: Created from HEAD

Entri teratas Branch: renamed refs/heads/fitur-tampilan to refs/heads/fitur-tema-gelap adalah sertifikat resmi perpindahan itu — dua entri di bawahnya (pembuatan commit dan pembuatan branch) adalah sejarah lama yang ikut pindah rumah. Reflog yang utuh berarti git reflog tetap bisa dipakai menyelamatkan keadaan, persis dibahas di section Pemulihan dan Recovery .

Mengganti Nama Branch Aktif #

Branchnya baru saja dipindahkan, dan pekerjaan tema akan dilanjutkan di sana — nama panjang fitur-tema-gelap akan menemani tiap prompt shell, jadi kita perpendek. Rename untuk branch tempat kita berdiri cukup satu argumen:

bash
git switch fitur-tema-gelap
git branch -m fix-tema-gelap
git branch --show-current

Output yang Dihasilkan (perintah git branch --show-current):

text
fix-tema-gelap

Satu argumen berarti “ganti nama branch aktif”; posisi berdiri tidak berpindah, HEAD tetap menempel pada branch yang sama dengan label barunya. Daftar akhirnya rapi:

bash
git branch -v

Output yang Dihasilkan:

text
* fix-tema-gelap 9cbacd2 Mulai rancangan tema gelap
  main           9a5a40e Mulai catatan tema

Branch di Remote Perlu Tiga Langkah #

Rename di atas hanya menyentuh salinan lokal. Branch yang sudah ter-push ke remote punya penunjuk kembar di server, dan penunjuk itu tidak ikut pindah sendiri — urutan lengkapnya berbunyi: ganti nama lokal, dorong nama baru, baru hapus nama lama di remote. Konseptualnya:

bash
git branch -m nama-lama nama-baru
git push -u origin nama-baru
git push origin --delete nama-lama

Urutannya bukan gaya-gayaan. Dorong dulu nama baru sebelum menghapus nama lama, agar selalu ada satu branch hidup di remote — tidak ada jendela waktu ketika rekan yang menarik perubahan mendapati branchnya raib. Flag -u sekalian mengaitkan branch lokal ke origin/nama-baru sebagai upstream. Detail remote, upstream, dan penghapusan branch jauh dibahas tuntas di section Remote Repository , khususnya chapter Menghapus Remote Branch .

Migrasi Branch Bawaan master ke main #

Penggunaan git branch -m paling masif di era ini: mengganti nama bawaan repository lama dari master ke main. Sisi lokalnya bisa diuji sungguhan — repository kecil sengaja dibuat dengan nama bawaan lama:

bash
mkdir latihan-migrasi && cd latihan-migrasi
git init -b master
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf 'katalog.md\n' > katalog.md
git add katalog.md
git commit -m "Commit pertama di master"
git branch
git symbolic-ref HEAD

Output yang Dihasilkan (perintah git branch):

text
* master

Output yang Dihasilkan (perintah git symbolic-ref HEAD):

text
refs/heads/master

git symbolic-ref HEAD membongkar isi HEAD: ia sedang menunjuk refs/heads/master. Migrasinya satu perintah yang sudah kita kenal:

bash
git branch -m master main
git branch
git symbolic-ref HEAD
git log --oneline

Output yang Dihasilkan (perintah git branch):

text
* main

Output yang Dihasilkan (perintah git symbolic-ref HEAD):

text
refs/heads/main

Output yang Dihasilkan (perintah git log --oneline):

text
8a900e9 Commit pertama di master

HEAD kini menunjuk refs/heads/main, daftar branch hanya berisi main, dan commit 8a900e9 tetap utuh di puncaknya — rename memindahkan label, bukan isi. Untuk repository yang punya remote, dua langkah penyelaras menyusul secara konseptual: git fetch origin memperbarui gambaran kita tentang keadaan server, dan git remote set-head origin -a menyuruh Git membaca ulang titik HEAD milik remote (penunjuk yang menentukan branch bawaan saat orang lain men-clone) agar ikut mengikuti main. Di platform hosting seperti GitHub atau GitLab, branch bawaan juga perlu diganti lewat pengaturan repository sebelum nama lama dihapus dari remote.

Rename kini menuntup daftar manipulasi nama branch. Satu pertanyaan besar masih terbuka dan bukan lagi soal perintah, melainkan soal keputusan: branch seperti apa yang sebaiknya kita buat? Jawabannya berupa pola dan konvensi — pokok chapter penutup section ini: Strategi Branching .