Setiap repository baru lahir dengan satu branch awal, dan Git harus memilihkan nama saat git init dijalankan — bahkan sebelum commit pertama ada. Nama pilihan bawaan Git sejak awal adalah master, sementara dunia industri sudah beralih ke main, sehingga repository buatan baru kerap memerlukan langkah ganti nama manual. Sejak Git 2.28, kunci init.defaultBranch memungkinkan kita menentukan nama kesukaan sekali di konfigurasi global, lalu seluruh git init berikutnya mengikutinya. Chapter ini membuktikan kedua sisi perilaku tersebut secara nyata: hint yang muncul tanpa pengaturan, dan hasil bersih setelahnya.

Nama Branch Pertama Repository #

Saat git init berjalan, Git tidak benar-benar membuat branch — belum ada commit apa pun untuk ditunjuk. Yang dibuat adalah penanda tidak kasatmata bernama HEAD yang sudah “memesan” nama branch awal; begitu commit pertama dibuat, barulah branch bernama itu benar-benar terbentuk. Karena itu nama branch awal ditentukan pada saat init, bukan saat commit, dan itulah sebabnya kunci pengaturnya bernama init.defaultBranch.

Perilaku Bawaan dan Hint-nya #

Kita uji perilaku bawaan di sandbox dengan HOME yang bersih — tidak ada ~/.gitconfig, sehingga init.defaultBranch belum diatur. Pembuatan repository dibahas tuntas di chapter git init ; di sini kita jalankan langsung perintahnya:

bash
cd demo-ch10
git init

Output yang Dihasilkan:

text
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
	git branch -m <name>
Initialized empty Git repository in /home/z/my-project/tutorial-extracted/work/sandbox/instalasi-dan-konfigurasi/demo-ch10/.git/

Keluaran di atas diambil dari Git 2.47.3 di mesin uji. Dua belas baris hint di awal bukan galat — repository tetap berhasil dibuat, seperti baris terakhir yang menyatakan. Git hanya memberi tahu bahwa nama master dipakai sebagai pilihan bawaan, bahwa pilihan itu berpeluang berubah di masa depan, dan bahwa pengaturan init.defaultBranch akan membuat hint ini hilang. Kita periksa nama branch yang terpasang:

bash
git symbolic-ref --short HEAD

Output yang Dihasilkan:

text
master

Jalur sandbox pada keluaran sebelumnya menyesuaikan lokasi direktori di masing-masing mesin. Pesan hint inilah yang setiap hari menyapa pengguna Git yang belum mengatur init.defaultBranch.

Mengatur init.defaultBranch #

Satu perintah ini memutuskan nama branch awal untuk seluruh repository baru milik akun kita:

bash
git config --global init.defaultBranch main

Nilai tersimpan sebagai subkunci defaultBranch di bawah section [init] pada ~/.gitconfig:

ini
[init]
        defaultBranch = main

Repository yang dibuat setelah pengaturan ini tidak lagi menampilkan hint, dan branch awalnya langsung bernama main:

bash
cd ../demo-ch10-setelah
git init
git symbolic-ref --short HEAD

Output yang Dihasilkan:

text
Initialized empty Git repository in /home/z/my-project/tutorial-extracted/work/sandbox/instalasi-dan-konfigurasi/demo-ch10-setelah/.git/
main

Karena akun uji di Course ini sudah mengatur init.defaultBranch main sejak awal, seluruh chapter sebelumnya memakai main tanpa kita jumpai hint sama sekali — sandbox chapter ini sengaja memakai HOME kosong agar perilaku bawaan terlihat. Bila nama kesukaan kita bukan main, cukup tulis nama itu sebagai nilai; Git tidak memvalidasi daftar nama tertentu.

Mengganti Nama Branch yang Sudah Dibuat #

Repository lama — atau repo yang barusan dibuat tanpa pengaturan — tetap bisa diubah namanya dengan git branch -m, cara yang juga disebut hint di atas. Perintah git branch -m <nama-baru> mengganti nama branch yang sedang aktif:

bash
git branch -m master main
git branch --show-current

Output yang Dihasilkan:

text
main

Perintah ini juga berlaku untuk branch yang belum memiliki commit, seperti master yang baru “dipesan” oleh HEAD. Setelah diganti, commit pertama akan tercatat pada branch main:

bash
git config user.name "Budi Santoso"
git config user.email "[email protected]"
echo "halo" > halo.txt
git add halo.txt
git commit -m "Commit pertama setelah rename"

Output yang Dihasilkan:

text
[main (root-commit) 1da7d80] Commit pertama setelah rename
 1 file changed, 1 insertion(+)
 create mode 100644 halo.txt

Deretan 1da7d80 adalah identitas commit yang nilainya berbeda di tiap mesin. Penggantian nama branch pada repository yang sudah berisi banyak commit dan remote dibahas lebih jauh pada chapter rename branch ; untuk repository baru seperti ini, satu perintah sudah tuntas. Sebagai catatan, git init juga menerima flag -b untuk menentukan nama per repository tanpa menyentuh konfigurasi global — pola git init -b main yang dipakai di seluruh sandbox Course ini.

Konvensi Industri: main #

Nama main menyebar sebagai konvensi setelah layanan hosting besar — GitHub, GitLab, dan Bitbucket — mengalihkan nama bawaan repository barunya pada 2020. Alasannya praktis: master mengandung konotasi yang tidak nyaman di tempat kerja, dan nama branch awal memang tidak punya fungsi teknis khusus — Git tidak memberi perlakuan istimewa pada branch mana pun yang jadi branch awal. Menyamakan nama dengan konvensi industri membuat repository kita terasa familiar bagi siapa pun yang meng-clone, dan menghilangkan selisih nama antara repository lokal dan repository di layanan hosting.

Nama branch bawaan kini aman di tangan init.defaultBranch. Masalah lintas platform berikutnya lebih sulit terlihat: akhir baris CRLF dan LF yang tidak kasatmata namun mengacaukan diff — kita tuntaskan dengan core.autocrlf dan .gitattributes pada chapter berikutnya.