Main Branch (sebelumnya Master) — adalah cabang Git utama yang berisi kode produksi stabil, siap untuk diterapkan. Setiap commit di main sesuai dengan versi rilis proyek, dan cabang itu sendiri dilindungi dari perubahan langsung dan berfungsi sebagai satu-satunya sumber kebenaran untuk seluruh tim. Menurut GitHub, 2020, sejak Oktober 2020, cabang default baru disebut main, bukan master.
Poin Utama
Main Branch (atau Master — tergantung pada pengaturan repositori) — adalah cabang default yang dibuat saat inisialisasi repositori Git mana pun. Ini adalah cabang utama proyek dan berisi kode yang siap untuk diterapkan ke produksi.
Tidak seperti develop, di mana pekerjaan sehari-hari dengan fitur baru berlangsung, main adalah etalase proyek. Setiap versi kode di main telah melalui siklus lengkap: pengembangan di cabang feature, integrasi di develop, persiapan rilis di cabang release, dan pengujian akhir. Hanya setelah itu perubahan masuk ke main.
Prinsip Utama: main harus selalu stabil. Jika kesalahan ditemukan di main, itu berarti hotfix mendesak yang harus dirilis di luar jadwal. Oleh karena itu, dalam proyek profesional, main dilindungi dari perubahan yang tidak disengaja oleh branch protection rules.
Menurut Git Book, main bukanlah cabang khusus dengan properti istimewa, melainkan referensi biasa ke sebuah commit yang menurut konvensi dianggap utama. Git tidak membedakan antara main dan cabang lainnya di tingkat sistem.
Secara historis, cabang default di Git disebut master. Pada Juni 2020, gerakan Black Lives Matter menyoroti istilah master dan slave di industri IT. GitHub mengumumkan transisi ke istilah main untuk cabang default.
Sejak Oktober 2020, semua repositori baru di GitHub dibuat dengan cabang main. GitLab dan Bitbucket juga menerapkan dukungan untuk main sebagai nama default. Git 2.28 (Juli 2020) menambahkan opsi init.defaultBranch untuk mengonfigurasi nama cabang default.
Secara teknis, mengganti nama cabang yang ada dari master ke main adalah operasi sederhana. Tantangan utamanya adalah memperbarui semua referensi di konfigurasi CI/CD, dokumentasi, dan repositori lokal pengembang.
Untuk mengganti nama cabang di repositori yang ada, jalankan:
# Penggantian nama lokal master menjadi main
git branch -m master main
# Memperbarui repositori jarak jauh
git push -u origin main
# Menghapus master lama di server
git push origin --delete master
# Memperbarui HEAD di server
# (melalui antarmuka web GitHub: Settings → Branches → Default branch)
Git Flow dan GitHub Flow mendefinisikan peran cabang main secara berbeda. Pemilihan model tergantung pada ukuran tim, frekuensi rilis, dan persyaratan stabilitas kode.
| Karakteristik | Git Flow | GitHub Flow |
|---|---|---|
| Peran main | Hanya versi rilis | Cabang pusat pengembangan |
| Cabang tambahan | Develop, Release, Hotfix | Hanya cabang feature |
| Frekuensi rilis | Sekali setiap 1-4 minggu | Beberapa kali sehari |
| Kompleksitas | Tinggi | Rendah |
| Kapan memilih | Aplikasi mobile dengan siklus rilis | Layanan web dengan penerapan berkelanjutan |
Untuk pengembangan aplikasi mobile, standarnya adalah Git Flow, karena publikasi aplikasi di App Store dan Google Play memiliki siklus rilis yang tetap. GitHub Flow lebih cocok untuk proyek web dengan kemungkinan penerapan beberapa kali sehari.
Di GitHub Flow tidak ada cabang develop. Semua cabang feature dibuat langsung dari main, dan setelah selesai digabungkan kembali melalui Pull Request. Setiap penggabungan ke main secara otomatis memicu penerapan ke produksi. Model ini memerlukan otomatisasi pengujian yang tinggi dan disiplin tim.
Di GitHub Flow tidak ada cabang develop. Semua cabang feature dibuat langsung dari main, dan setelah selesai digabungkan kembali melalui Pull Request. Setiap penggabungan ke main secara otomatis memicu penerapan ke produksi. Model ini memerlukan otomatisasi pengujian yang tinggi dan disiplin tim.
Branch protection untuk main — pengaturan wajib di setiap proyek komersial. Tanpa itu, push yang tidak disengaja dapat mengirim kode yang belum selesai ke produksi atau merusak aplikasi yang berfungsi untuk semua pengguna.
Mengonfigurasi keenam aturan — standar untuk proyek mobile dengan audiens 10.000+ pengguna. Untuk proyek kecil, tiga aturan pertama sudah cukup.
Tingkat perlindungan main tergantung pada skala proyek. Startup dapat bertahan dengan perlindungan minimal, sementara aplikasi enterprise memerlukan batasan maksimal.
Penandaan (tagging) — praktik membuat referensi bernama ke commit tertentu di main. Setiap tag sesuai dengan versi aplikasi yang dirilis ke produksi. Ini memungkinkan peralihan cepat ke rilis sebelumnya untuk debugging atau patch.
Standar penamaan tag dalam pengembangan aplikasi mobile — SemVer (Semantic Versioning): v1.2.3, di mana nomor pertama adalah versi utama (breaking changes), kedua — minor (fitur baru), ketiga — patch (perbaikan).
Tag dibuat setelah penggabungan cabang release ke main. Commit ini kemudian dibangun di CI/CD, ditandatangani, dan dikirim ke toko aplikasi. Jika kesalahan ditemukan di tag, cabang hotfix dibuat dari tag tersebut.
# Membuat tag rilis beranotasi
git tag -a v2.4.1 -m "Release version 2.4.1"
# Mengirim tag ke server
git push origin v2.4.1
# Melihat semua tag di repositori
git tag -l "v2.*"
# Membuat cabang hotfix dari tag tertentu
git checkout -b hotfix/crash-fix v2.4.1
Memahami hierarki cabang di Git Flow — dasar untuk organisasi pengembangan kolaboratif yang benar. Setiap jenis cabang memiliki sumber, tujuan, dan aturan penggabungan sendiri.
Aturan penting: feature tidak pernah digabungkan langsung ke main. feature → develop → release → main — rantai penggabungan yang benar. Pelanggaran aturan ini menghilangkan makna seluruh model Git Flow.
Pertimbangkan skenario: tim telah menyelesaikan persiapan rilis v2.5.0. Cabang release telah diperiksa dan siap untuk digabungkan ke main. Setelah penggabungan, tag dibuat dan rilis dipublikasikan.
# Beralih ke main dan memperbarui
git checkout main
git pull origin main
# Menggabungkan cabang release yang telah diperiksa
git merge --no-ff release/2.5.0
# Membuat tag rilis
git tag -a v2.5.0 -m "Release 2.5.0 - Payment integration"
# Mengirim main dan tag ke server
git push origin main --tags
Bendera --no-ff (no fast-forward) menjamin pembuatan commit penggabungan, bahkan jika penggabungan dapat dilakukan dengan perpindahan pointer sederhana. Ini menyimpan informasi bahwa perubahan berasal dari cabang release, yang menyederhanakan analisis riwayat.
Jika kesalahan kritis ditemukan di produksi, prosesnya berbeda dari rilis biasa. Hotfix dibuat dari main, dan setelah perbaikan digabungkan baik ke main maupun develop.
Jika kesalahan kritis ditemukan di produksi, prosesnya berbeda dari rilis biasa. Hotfix dibuat dari main, dan setelah perbaikan digabungkan baik ke main maupun develop.
# Membuat cabang hotfix dari main
git checkout main
git checkout -b hotfix/2.5.1-crash-fix
# Memperbaiki dan melakukan commit
git add src/fix/
git commit -m "Fix crash on login screen"
# Menggabungkan hotfix kembali ke main
git checkout main
git merge --no-ff hotfix/2.5.1-crash-fix
git tag -a v2.5.1 -m "Hotfix 2.5.1"
git push origin main --tags
# Menggabungkan hotfix juga ke develop
git checkout develop
git merge --no-ff hotfix/2.5.1-crash-fix
git push origin develop
# Menghapus cabang hotfix
git branch -d hotfix/2.5.1-crash-fix
Pertanyaan yang Sering Diajukan
Secara teknis — ya, ini adalah referensi biasa ke sebuah commit. Namun secara praktis — tidak, karena main adalah cabang default dan sebagian besar platform tidak mengizinkan penghapusan cabang yang ditetapkan sebagai default branch. Alih-alih menghapus, buat default branch baru, lalu hapus yang lama.
Jika kesalahan tidak kritis, gunakan proses biasa: buat cabang feature dari develop, perbaiki kesalahan, lalui peninjauan kode, dan tunggu siklus rilis berikutnya. Hotfix hanya digunakan untuk kesalahan kritis yang memblokir pekerjaan pengguna.
main — cabang lokal di komputer Anda. origin/main — cache lokal dari status cabang jarak jauh di server. Perintah git fetch memperbarui origin/main, sedangkan git pull langsung menggabungkan perubahan ke main lokal Anda.
Gunakan git clone untuk menyalin seluruh repositori ke direktori baru. Jika perlu mengubah URL jarak jauh, jalankan git remote set-url origin. Untuk mengubah direktori kerja tanpa menyalin repositori, gunakan git worktree add.
Ya, bahkan dalam tim yang terdiri dari dua orang, perlindungan main dibenarkan. Push yang tidak disengaja dengan perintah yang salah dapat menimpa riwayat. Perlindungan minimal — larangan push langsung dan persyaratan PR — membutuhkan waktu 5 menit untuk dikonfigurasi dan mencegah berjam-jam pemulihan data.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga