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:
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 -vOutput yang Dihasilkan (perintah git branch -v):
fitur-tema-gelap 9cbacd2 Mulai rancangan tema gelap
* main 9a5a40e Mulai catatan temaPerintah 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:
git reflog show fitur-tema-gelapOutput yang Dihasilkan:
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 HEADEntri 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:
git switch fitur-tema-gelap
git branch -m fix-tema-gelap
git branch --show-currentOutput yang Dihasilkan (perintah git branch --show-current):
fix-tema-gelapSatu argumen berarti “ganti nama branch aktif”; posisi berdiri tidak berpindah, HEAD tetap menempel pada branch yang sama dengan label barunya. Daftar akhirnya rapi:
git branch -vOutput yang Dihasilkan:
* fix-tema-gelap 9cbacd2 Mulai rancangan tema gelap
main 9a5a40e Mulai catatan temaBranch 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:
git branch -m nama-lama nama-baru
git push -u origin nama-baru
git push origin --delete nama-lamaUrutannya 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:
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 HEADOutput yang Dihasilkan (perintah git branch):
* masterOutput yang Dihasilkan (perintah git symbolic-ref HEAD):
refs/heads/mastergit symbolic-ref HEAD membongkar isi HEAD: ia sedang menunjuk refs/heads/master. Migrasinya satu perintah yang sudah kita kenal:
git branch -m master main
git branch
git symbolic-ref HEAD
git log --onelineOutput yang Dihasilkan (perintah git branch):
* mainOutput yang Dihasilkan (perintah git symbolic-ref HEAD):
refs/heads/mainOutput yang Dihasilkan (perintah git log --oneline):
8a900e9 Commit pertama di masterHEAD 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 .